两个表中的SELECT如何用逗号分隔?(SELECT*FROM T1,T2)

31 sql database

给出2个表T1和T2.

T1   T2 
---------
A    1 
B    2
C    3
Run Code Online (Sandbox Code Playgroud)

你提出一个问题:

SELECT * 
  FROM T1, T2
Run Code Online (Sandbox Code Playgroud)

从此查询中获取的行的no:是什么?

(a) 4
(b) 5
(c) 6
(d) 9
Run Code Online (Sandbox Code Playgroud)

答案是:9

题:

为什么答案是"9"?

Mar*_*ers 79

两个表之间的逗号表示CROSS JOIN,它给出了两个表的笛卡尔积.您的查询相当于:

SELECT *
FROM T1
CROSS JOIN T2
Run Code Online (Sandbox Code Playgroud)

结果是第一个表中的一行与第二个表中的一行的每个配对.因此,结果中的行数是原始表中行数的乘积.在这种情况下,答案是3 x 3 = 9.

行将如下:

T1.foo   T2.bar
A        1
A        2
A        3
B        1
B        2
B        3
C        1
C        2
C        3
Run Code Online (Sandbox Code Playgroud)