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

时间:2010-08-21 16:41:16

标签: sql database

给出2个表T1和T2。

T1   T2 
---------
A    1 
B    2
C    3

您进行查询:

SELECT * 
  FROM T1, T2

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

(a) 4
(b) 5
(c) 6
(d) 9

答案是:9

问题:

为什么答案为“9”?

1 个答案:

答案 0 :(得分:71)

两个表之间的逗号表示CROSS JOIN,它给出了两个表的Cartesian product。您的查询等同于:

SELECT *
FROM T1
CROSS JOIN T2

结果是第一个表中的一行与第二个表中的一行的每个配对。因此,结果中的行数是原始表中行数的乘积。在这种情况下,答案是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