mysql聯合查詢效率較高,以下例子來說明聯合查詢(內聯、左聯、右聯、全聯)的好處:
t1表結構(使用者名稱,密碼)
userid(int) username varchar(20) password varchar(20)
1
jack
jackpwd
2
owen
owenpwd
t2表結構(使用者名稱,密碼)
userid(int) jifen varchar(20) dengji varchar(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關聯查詢去重 MySQL 關聯查詢
mysql 關聯查詢 sql資料分析 1週前 mysql 關聯查詢 前面,我們介紹的都是單錶查詢 就是只從一張表中獲取資料 而實際應用的時候,我們都會同時查詢多張表,這裡,我們就介紹下,多表關聯查詢的使用。sql join 用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料 前置知識 主鍵 p...
mysql關聯查詢
在程式開發時,不可避免的要用到檢視,首先我們來看看檢視到底有什麼作用 簡單性 看到的就是需要的。檢視不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為檢視,從而使得使用者不必為以後的操作每次制定全部的條件。安全性 通過檢視用固話只能查詢和修改他們所能見到的資料。資...
Mysql關聯查詢
七種結果 7 a b a b 或者 a a b b a b 如何實現?1 內連線 2 外連線 左外連線 右外連線 全外連線 mysql使用union代替全外連線 1.內連線 實現a b select 字段列表 from a表 inner join b表 on 關聯條件 where 等其他子句 或se...