繁体   English   中英

内部联接与正常的多表选择有何不同?

[英]How is inner join different from normal multi-table selection?

我有两个查询:

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;

让我们知道是否有任何区别。 (不可以)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM