所以我刚刚遇到了一些有趣的事情,我不知道以前是否有人回答过,因为我不知道它叫什么。假设您有两张桌子;第一个有一行,第二个有两行。如果您运行以下语句:
SELECT t1.*
FROM table1 t1, table2 t2
它返回两行,并且都具有相同的值,但第一个表只有一行!为什么会出现这种情况?如果您没有相应地更改 select 子句,我认为 from 子句中的另一个表不会改变任何内容。
您正在选择两个表的笛卡尔积。
它将返回COUNT(t1) * COUNT(t2)
记录:来自的记录t1
与来自的记录的所有可能组合t2
。
使用ANSI
语法,您的查询将读取为:
SELECT t1.*
FROM table1 t1
CROSS JOIN
table2 t2