[英]Select from Table1, Table2
我找到了以下查詢並欣賞它,如果有人可以幫我解釋這意味着什么。
select * from table1, table2
這就是所謂的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行),因為它將兩個源(表)中的所有行配對。
您將獲得table1中的所有行乘以table2中的所有行,並將根據兩個表的列顯示。 正如@sgeddes所指出的那樣,創造了一個笛卡爾積。
表1(Col1,Col2)有4個記錄
表2(Col11,Col22,Col33)有3個記錄
當您使用下面給出的查詢時,它將產生NxM行數(笛卡爾加入)
select * from table1, table2
兩個表的結果和列序列將在下面給出4 x 3 = 12個記錄。 Col1,Col2,Col11,Col22,Col33
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.