熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

SQL聯合查詢(內聯、左聯、右聯、全聯)的語法

2013-11-23 21:04:57  來源: MySQL 

  概述

  聯合查詢效率較高舉例子來說明聯合查詢內聯inner join 左聯left outer join 右聯right outer join 全聯full outer join 的好處及用法

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

  T表結構
(用戶名密碼)

  userid
(int)

  username
varchar(

  password
varchar(

  

  

  jack

  jackpwd

  

  

  owen

  owenpwd

  

  T表結構
(用戶名密碼)

  userid
(int)

  jifen
varchar(

  dengji
varchar(

  

  

  

  

  

  

  

  

  第一內聯(inner join)

  如果想把用戶信息積分等級都列出來那麼一般會這樣寫select * from T T where Tuserid = Tuserid(其實這樣的結果等同於select * from T inner join T on Tuserid=Tuserid )

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

  SQL語句select * from T inner join T on Tuserid=Tuserid

  運行結果

  Tuserid

  username

  password

  Tuserid

  jifen

  dengji

  

  

  jack

  jackpwd

  

  

  

  第二左聯(left outer join)

  顯示左表T中的所有行並把右表T中符合條件加到左表T中;右表T中不符合條件就不用加入結果表中並且NULL表示

  SQL語句select * from T left outer join T on Tuserid=Tuserid

  運行結果

  Tuserid

  username

  password

  Tuserid

  jifen

  dengji

  

  

  jack

  jackpwd

  

  

  

  

  

  owen

  owenpwd

  NULL

  NULL

  NULL

  第三右聯(right outer join)

  顯示右表T中的所有行並把左表T中符合條件加到右表T中;左表T中不符合條件就不用加入結果表中並且NULL表示

  SQL語句select * from T right outer join T on Tuserid=Tuserid

  運行結果

  Tuserid

  username

  password

  Tuserid

  jifen

  dengji

  

  

  jack

  jackpwd

  

  

  

  

  NULL

  NULL

  NULL

  

  

  

  第四全聯(full outer join)

  顯示左表T右表T兩邊中的所有行即把左聯結果表+右聯結果表組合在一起然後過濾掉重復的

  SQL語句select * from T full outer join T on Tuserid=Tuserid

  運行結果

  Tuserid

  username

  password

  Tuserid

  jifen

  dengji

  

  

  jack

  jackpwd

  

  

  

  

  

  owen

  owenpwd

  NULL

  NULL

  NULL

  

  NULL

  NULL

  NULL

  

  

  

  總結關於聯合查詢效率的確比較高種聯合方式如果可以靈活使用基本上復雜的語句結構也會簡單起來種方式是)Inner join )left outer join )right outer join )full outer join


From:http://tw.wingwit.com/Article/program/MySQL/201311/29552.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.