mysql聯合查詢效率較高,以下例子來說明聯合查詢(內聯、左聯、右聯、全聯)的好處:
t1表結構(使用者id,使用者名稱,密碼)
userid username password
1 jack jackpwd
2 owen owenpwd
t2表結構(使用者id,使用者積分,使用者等級)
userid(int) jifen dengji
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
join
)顯示左表t1中的所有行,並把右表t2中符合條件加到左表t1中;
右表t2中不符合條件,就不用加入結果表中,並且null表示。
sql語句:
select
*from t1 left
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
join
)。顯示右表t2中的所有行,並把左表t1中符合條件加到右表t2中;
左表t1中不符合條件,就不用加入結果表中,並且null表示。
sql語句:
select
*from t1 right
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
join
)顯示左表t1、右表t2兩邊中的所有行,即把左聯結果表 + 右聯結果表組合在一起,然後過濾掉重複的。
sql語句:
select
*from t1 full
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聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t3表結構 使用者名稱,密碼...
MySQL聯合查詢語法內聯 左聯 右聯 全聯
mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,密碼...
SQL聯合查詢(內聯 左聯 右聯 全聯)的語法
概述 聯合查詢效率較高,舉例子來說明聯合查詢 內聯inner join 左聯left outer join 右聯right outer join 全聯full outer join 的好處及用法。聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 ...