我有两个问题:
SELECT m.id, m.name, f.type, c.id
FROM main AS m, filter AS f, city AS c
WHERE m.id = f.id AND c.name = m.city;
和
SELECT m.id, m.name, f.type, c.id
FROM main AS m
INNER JOIN filter as f ON m.id = f.id
INNER JOIN city AS c ON c.name = m.city;
两者都应该给我相同的输出集。我为一小组值运行它们并且工作正常,但是当我为一组非常大的值运行它们时,两者都返回非常不同的行数(第一个返回 ~500K 行,而第二个返回 ~65K 行).这两个查询有什么区别吗?
[编辑]:
我正在使用 mysql 作为 RDBMS。
最佳答案
即使查询 #2 是推荐的标准。两个查询应返回相同的结果。
我的建议。比较那些分开的连接查询
SELECT m.id, m.name, f.type
FROM main AS m, filter AS f
WHERE m.id = f.id;
SELECT m.id, m.name, f.type
FROM main AS m
INNER JOIN filter as f ON m.id = f.id;
然后
SELECT m.id, m.name, c.id
FROM main AS m, city AS c
WHERE c.name = m.city;
SELECT m.id, m.name, f.type, c.id
FROM main AS m
INNER JOIN city AS c ON c.name = m.city;
如果有任何不同,请告诉我们。 (应该没有)
关于mysql - inner join和普通的多表选择有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32158226/