您好,登錄后才能下訂單哦!
sql語句中怎么實現聯合查詢,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
2011-03-01 18:58:22| 分類: mysql|字號 訂閱
person表和user表沒有約束
有以下幾種關聯
1.UNION
格式:
查詢語句
UNION [ALL] 查詢語句
[UNION [ALL] 查詢語句][…n]
說明:
ALL選項表示將所有行合并到結果集合中。不指定該項時,被聯合查詢結果集合中的重復行將只保留一行。
在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括號可以改變這一執行順序。例如:
查詢1 UNION (查詢2 UNION 查詢3)
執行:select id,name from user UNION select id,name from person;
注意:sql句子欄目數必須是相同的,字段可以隨意 2.JOIN
JOIN用于按照ON條件聯接兩個表,主要有四種:
(一)內連接
INNER JOIN:內部聯接兩個表中的記錄,僅當至少有一個同屬于兩表的行符合聯接條件時,內聯接才返回行。(表示交集)
(二)外連接
LEFT JOIN / LEFT OUTER JOIN:外部聯接兩個表中的記錄,并包含左表中的全部記錄。如果左表的某記錄在右表中沒有匹配記錄,則在相關聯的結果集中右表的所有選擇列表列均為空值。理解為即使不符合ON條件,左表中的記錄也全部顯示出來,且結果集中該類記錄的右表字段為空值。(差集)
RIGHT JOIN / RIGHT OUTER JOIN:外部聯接兩個表中的記錄,并包含右表中的全部記錄。簡單說就是和LEFT JOIN反過來。(差集)
FULL JOIN / FULL OUTER JOIN: 完整外部聯接返回左表和右表中的所有行。就是LEFT JOIN和RIGHT JOIN和合并,左右兩表的數據都全部顯示。(并集)
(三)交叉連接
交叉連接(cross join)不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數據行數等于第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
JOIN的基本語法(注意結果對比):
1.執行 select * from user as A join person as B on A.id=B.id;或
select * from user as A inner join person as B on A.id=B.id;
結果如下:
2.執行 select A.* from user as A join person as B on A.id=B.id;
3.執行select * from user as A left join person as B on A.id=B.id;
4.select * from person as A right
join user as B on A.id=B.id;
5.full join
mysql 5不支持full join 所以用左關聯和右關聯進行聯合
SELECT * FROM user
LEFT JOIN money ON user.id=money.id
UNION
SELECT * FROM user
RIGHT JOIN money ON user.id=money.id
6.執行 select * from user CROSS JOIN person;
巧記select * from A left join B where 條件 其一: 表以from最近表為準則(A表) 其二: join B要放在表A left (其中對面中的左右以自身的左右正好相反) 其三:from A表為準則時,Join表有多字段內容,少則為空值NULL right join正好相反select * from A right join B where 條件
關于sql語句中怎么實現聯合查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。