内部连接与普通的多表选择有何不同?



我有两个查询:

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;

如果有什么不同,请告诉我们。(不应该是any)

最新更新