您的位置:首页 > 数据库

SQL in 与inner join查询结果的区别

2016-05-03 16:06 375 查看


















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 |

| 2 | b | 2 | e |

+------+------+------+------+

从查询结果中可以看出,in的结果是不会有重复的,对非主键进行join时,join的结果是有重复的。如果说还有另一个区别的话就是join会产生一个两表合并的临时表,in不会产生两表合并的临时表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: