我找到了下面的问题,如果有人能帮我解释一下这是什么意思,我将不胜感激。
select * from table1, table2
发布于 2016-10-04 18:14:40
这称为CROSS JOIN
,但在FROM
子句中使用带有,
的旧语法。我的建议是不要使用旧的语法,在这里坚持使用JOIN
。
它产生一个笛卡尔乘积,因此结果集中的行数等于table1
中的行数乘以table2
中的行数(假设WHERE
子句中没有约束)。它有效地将来自table1
的每一行与来自table2
的一行配对。
下面的查询是等效的,但它执行显式的JOIN
操作,它将数据检索的约束逻辑(通常放在WHERE
子句中)与连接存储在不同表中的相关数据的逻辑(放在FROM
子句中)分开:
SELECT *
FROM table1
CROSS JOIN table2
考虑一个例子,其中table1
有8行,table2
有5行。在输出中,您将获得40行(8行*5行),因为它将来自两个源(表)的所有行配对。
发布于 2016-10-04 18:13:31
您将得到table1中的所有行乘以table2中的所有行数,并将根据两个表的列进行显示。正如@sgeddes指出的,创建一个笛卡尔产品。
发布于 2017-11-03 07:32:45
具有4条记录的Table1 (Col1,Col2)
具有3个记录的Table2 (Col11、Col22、Col33)
当您使用下面给出的查询时,它将生成NxM行数(笛卡尔连接)
select * from table1, table2
下面将给出两个表的结果和列序列,其中4 x 3= 12个记录。Col1、Col2、Col11、Col22、Col33
https://stackoverflow.com/questions/39859022
复制相似问题