如何解决为什么在连接后返回比预期多的行?
我有 2 张桌子:
table 1 : count(*) ->7k rows
table 2 : count(*) ->19k rows
当我这样做时:
select count(*)
from table1
inner join table2;
它返回 1366127997 行。这怎么可能?
解决方法
您当前的查询实际上是在执行交叉连接:
SELECT COUNT(*)
FROM table1
INNER JOIN table2; -- behaves like CROSS JOIN sans an explicit ON clause
您很可能期望从涉及带有主键和辅助键的 ON
子句的内部联接中得到结果,例如:
SELECT COUNT(*)
FROM table1 t1
INNER JOIN table2 t2
ON t2.fk = t1.pk;
这可能会返回比您当前使用交叉连接看到的计数更少的记录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。