为什么 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 比您当前使用交叉联接看到的记录数少。