SQLin与innerjoin查询结果的区别
in和inner join在⼤多数情况下都是返回两表的交集,但是两者还是有区别的,如下例⼦
mysql> select * from a;
+------+------+
| id  | name |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
+------+------+
mysql> select * from b;
+------+------+
| id  | name |
+------+------+
|    1 | d    |
|    1 | g    |
|    2 | e    |
|    4 | f    |
+------+------+
mysql> select a.id, a.name from a where a.id in (select b.id from b);
+------+------+
| id  | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
mysql> select a.id, a.name from a inner join b on (a.id = b.id);
+------+------+
| id  | name |
+------+------+
|    1 | a    |
|    1 | a    |
|    2 | b    |
+------+------+
mysql> select * from a inner join b on (a.id = b.id);
+------+------+------+------+
| id  | name | id  | name |
+------+------+------+------+
|    1 | a    |    1 | d    |
|    1 | a    |    1 | g    |
connect和join的区别|    2 | b    |    2 | e    |
+------+------+------+------+
从查询结果中可以看出,in的结果是不会有重复的,对⾮主键进⾏join时,join的结果是有重复的。如果说还有另⼀个区别的话就是join会产⽣⼀个两表合并的临时表,in不会产⽣两表合并的临时表。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。