给定2个表 T1 和 T2。
T1 T2
---------
A 1
B 2
C 3
你发起了一个查询:
SELECT *
FROM T1, T2
这个查询语句会获取多少行数据?
(a) 4
(b) 5
(c) 6
(d) 9
答案是: 9
问题:
"为什么答案是9?"
给定2个表 T1 和 T2。
T1 T2
---------
A 1
B 2
C 3
你发起了一个查询:
SELECT *
FROM T1, T2
这个查询语句会获取多少行数据?
(a) 4
(b) 5
(c) 6
(d) 9
"为什么答案是9?"
两个表之间的逗号表示CROSS JOIN,它给出了这两个表的笛卡尔积。你的查询等同于:
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