mysql 聯結查詢

2022-09-13 09:12:09 字數 1956 閱讀 4487

mysql聯合查詢效率較高,以下例子來說明聯合查詢(內聯、左聯、右聯、全聯)的好處:

t1表結構(使用者名稱,密碼)   

userid(int)   usernamevarchar(20)   passwordvarchar(20)   

1   jack  jackpwd   

2   owen  owenpwd   

t2表結構(使用者名稱,密碼)   

userid(int)   jifenvarchar(20)   dengjivarchar(20)   

1   20   3   

3   50   6   

第一:內聯(inner join)

如果想把使用者資訊、積分、等級都列出來,那麼一般會這樣寫:

select * from t1, t3 where t1.userid = t3.userid

(其實這樣的結果等同於select * from t1 inner join t3 on t1.userid=t3.userid )。

把兩個表中都存在userid的行拼成一行(即內聯),但後者的效率會比前者高很多,建議用後者(內聯)的寫法。

sql語句:

select * from t1 inner join t2 on t1.userid = t2.userid

執行結果   

t1.userid   username   password   t2.userid   jifen   dengji   

1   jack   jackpwd   1   20   3   

第二:左聯(left outer join)

顯示左表t1中的所有行,並把右表t2中符合條件加到左表t1中;

右表t2中不符合條件,就不用加入結果表中,並且null表示。

sql語句:

select * from t1 left outer join t2 on t1.userid = t2.userid

執行結果   

t1.userid   username   password   t2.userid   jifen   dengji   

1   jack   jackpwd   1   20   3   

2   owen   owenpwd   null   null   null   

第三:右聯(right outer join)。

顯示右表t2中的所有行,並把左表t1中符合條件加到右表t2中;

左表t1中不符合條件,就不用加入結果表中,並且null表示。

sql語句:

select * from t1 right outer join t2 on t1.userid = t2.userid

執行結果   

t1.userid   username   password   t2.userid   jifen   dengji   

1   jack   jackpwd   1   20   3   

null   null   null   3   50   6   

第四:全聯(full outer join)

顯示左表t1、右表t2兩邊中的所有行,即把左聯結果表 + 右聯結果表組合在一起,然後過濾掉重複的。

sql語句:

select * from t1 full outer join t2 on t1.userid = t2.userid

執行結果   

t1.userid   username   password   t2.userid   jifen   dengji   

1   jack   jackpwd   1   20   3   

2   owen   owenpwd   null   null   null   

null   null   null   3   50   6   

總結,關於聯合查詢,效率的確比較高,4種聯合方式如果可以靈活使用,基本上覆雜的語句結構也會簡單起來。

MySQL聯結查詢和子查詢

2018 2 24 16 18 12 星期六 今天需要統計乙個運營活動的資料,涉及三個表,分組比較多 活動描述 每個人可以領取多張卡片,好友也可以贈送其卡片,20或40張卡片可以兌換乙個獎品 要求統計出 1.每個使用者的個人資訊,2.領取的卡總數,3.自己領的卡的數目,4.好友送的卡的數目,5.兌換...

MySQL子查詢,聯結表

子查詢 select cust id from orders where order num in select order num from orderitems where prod id tnt2 對每個客戶執行count 計算,應該將count 作為乙個子查詢 select cust nam...

mysql 聯結主鍵 MySQL基礎 聯結

聯結表 mysql是一種關聯式資料庫,所謂關係就是指把資料分解為多個表,乙個類據一 個表。各表之間通過某些常用的值 即關係 相關聯 就比如說有乙個表儲存了 商資訊,商id為主鍵。另乙個表儲存了一些商品的資訊,但是也需要知道商品相應的 商資訊。那麼可以給商品設定乙個 商id 稱為外來鍵,通過這個外來鍵...