簡體   English   中英

從Table1,Table2中選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM