有乙個前提很重要 就是兩個表中的對應字段應該是建立聯合關係且該鍵應唯一
在查詢該聯合建的時候要指明 表.欄位
1.
select * from
表a,表a子表
where表a.filecode =
表a子表.filecodeand表a.id
in(select
表a子表
.id from
表a子表 where
vc_code = '1190' and vc_num ='111300' and er_num ='0101');
這個查詢的條件在子表,而結果在父表,沒用關聯查詢,直接查詢2個表
2.
select * from
a表 as aleft joinc表 as cona.uid = c.eid ,
b表 as b
wherea.u_id = b.u_idand//a表和b表通過u_id關聯
b.d_idin(select max(d_id) from
b表 group by u_id)
//要d_id值最大的d_id
andb.caseid = '87'
//b表的乙個字段值已知
and a.status = '1';
//a表的乙個字段值已知
關聯查詢總結:
1.union
格式:查詢語句
union [all] 查詢語句
[union [all] 查詢語句][…n]
說明:all選項表示將所有行合併到結果集合中。不指定該項時,被聯合查詢結果集合中的重複行將只保留一行。
在包括多個查詢的union語句中,其執行順序是自左至右,使用括號可以改變這一執行順序。例如:
查詢1 union (查詢2 union 查詢3)
例子:person表和user表沒有約束
person表:
user表:
執行:select
id,name from
userunionselect
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 ajoinperson as b on a.id=b.id;或
select * from user as ainner joinperson as b on a.id=b.id;
結果如下:
2.執行
3.執行
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 usercross joinperson;
MySQL聯合查詢
1.select test.name,test2.name2 from test left join test2 on test.id test2.id 2.select test.name,test2.name2 from test right join test2 on test.id test...
mysql聯合查詢
mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,積分...
MySQL聯合查詢
mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,積分...