SQL语句显示比表更多的行

Gab*_* C. 1 sql oracle

所以我刚刚遇到了一些有趣的东西,我不知道它之前是否已被回答,因为我不知道它叫什么.可以说你有两张桌子; 第一行有一行,第二行有两行.如果您运行以下语句:

SELECT t1.*
FROM table1 t1, table2 t2
Run Code Online (Sandbox Code Playgroud)

它返回两行,两者都有相同的值,但第一个表只有一行!为什么会这样?如果你没有相应地改变select子句,我不认为在from子句中有另一个表改变了什么.

Qua*_*noi 6

您正在选择两个表的笛卡尔积.

它将返回COUNT(t1) * COUNT(t2)记录:来自t1记录的所有可能的记录组合t2.

使用ANSI语法,您的查询将读作:

SELECT  t1.*
FROM    table1 t1
CROSS JOIN
        table2 t2
Run Code Online (Sandbox Code Playgroud)