聘我网

新概念招聘3.0

这两句查询语句为何结果不同?

vote up0vote downstar
1
mysql> select a.id,a.parent from qa a left join qa b on a.parent=b.parent where b.id=7;
+----+--------+
| id | parent |
+----+--------+
|  7 |      1 |
|  8 |      1 |
|  9 |      1 |
+----+--------+
3 rows in set (0.00 sec)

mysql> select a.id,a.parent from qa a left join qa b on a.parent=b.parent and b.id=7;
+----+--------+
| id | parent |
+----+--------+
|  1 |   NULL |
|  2 |   NULL |
|  3 |   NULL |
|  4 |   NULL |
|  5 |   NULL |
|  6 |   NULL |
|  7 |      1 |
|  8 |      1 |
|  9 |      1 |
+----+--------+

读起来感觉不到任何区别

 

1 个答复

vote up0vote downcheck

第一句先join,然后用where b.id=7过滤结果

所以返回结果是a表中a.parent=b.parent并且b.id=7的行

第二句是将a表中所有行与b表中b.id=7的行进行join

所以会返回a表所有行

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.