文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>MYSQL一个查询语句引起的

MYSQL一个查询语句引起的

时间:2010-06-01  来源:hkebao

MYSQL一个查询语句引起的

情况是这样的。我有一个表A字段如下:

ID  编号    IP    

记录示例

1   SN00001     19.2.3.3   

2   SN00001     192.365.336.33

含义就表示:一台服务器定义了两个IP值

现在我的另外一个表里面的保存的是这台服务器的性能数据B表。

记录示例

1   SN00001     19.2.3.3

其中这个IP值是随机的一个IP(即有可能是外网IP也有可能是内网IP)

查询的时候的SQL语句:

select distinct c.* from B c,A a

where a.ip = c.server_ip and a.server_ip = '124.222.222.222'

这样查询的话我们可以这样来理解这句SQL语句的含义

这个SQL语句分析从右边往左边来分析。

第一步:a.server_ip = '124.222.222.222'

提取A表里面符合条件的记录。这样的话就是全部的外网IP记录了。

第二步:定义a.ip = c.server_ip

其实这个时候的server_ip已经是外网IP了。所以在我们的B表肯定是找不到记录了。

 

进一步:

select distinct c.* from B c,A a,A b

where a.ip = c.server_ip and a.id=b.id and a.server_ip = '124.222.222.222'

这样就可以。为什么呢?解释一下

 

第1步:依据a.server_ip = '124.222.222.222'

提取这一步。会返回一个小的结果集。这个结果集其实是

相当于做了这样的一个SQL:

Select * from A a,A b where a.ip = ‘’

这个其实是相当于是A*A做了笛卡尔积处理。返回的是:

1   SN00001     19.2.3.3   

2   SN00001     192.365.336.33

即这两个IP还是会提取出来。

有了这个结果集之后再进一步查询a.ip = c.server_ip

会将那个数据集进一步分割过滤。

即进一步做笛卡尔积处理

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载