为什么 return 行比连接后的预期多?
Why return more rows than the expected after a join?
我有 2 个表:
table 1 : count(*) ->7k rows
table 2 : count(*) ->19k rows
当我这样做时:
select count(*)
from table1
inner join table2;
它returns 1366127997 行。这怎么可能?
您当前的查询实际上是在进行 cross join:
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;
这可能 return 比您当前使用交叉联接看到的记录数少。
我有 2 个表:
table 1 : count(*) ->7k rows
table 2 : count(*) ->19k rows
当我这样做时:
select count(*)
from table1
inner join table2;
它returns 1366127997 行。这怎么可能?
您当前的查询实际上是在进行 cross join:
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;
这可能 return 比您当前使用交叉联接看到的记录数少。