mysql連表查詢
(上下)
select * from a.mobile_user (where)
union all
select * from b.mobile_user (where)
(左右)
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的連表查詢 MySQL 連表查詢
連表查詢 連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢 而外連線又分為三種連線方式,分別是左連線 left join 右連線 right join 全連線 full join 下來我們一起來看一下這幾種連線方式的區別及基礎用法。內連線inner join inner...
mysql連表查詢
多張表無條件的聯合查詢.沒有任何意思 select a.b.from a,b 格式1 顯式的內連線 select a.b.from a inner join b on ab的連線條件格式2 隱式的內連線 select a.b.from a,b where ab的連線條件左外連線 先展示join左邊的...
mysql 連表查詢
迪卡爾積顯示結果 原始的連表查詢 mysql select from stu,teacher where stu.tid teacher.id id name tid id name info 3 二狗子 3 3 pyhui python老師 4 三狗子 4 4 pytt python爬蟲 2 ro...