sql 里面 join in 的差別,join的用法


  1. join 有 left join,right join,inner join 這三種,對兩個表做了笛卡爾積,然后再對結果集進行選取操作,選取滿足條件的部分為結果。

  • JOIN(內聯接): 如果表中有至少一個匹配,則返回行(注釋:INNER JOIN 與 JOIN 是相同的。)
  • LEFT JOIN(左外聯接:): 即使右表中沒有匹配,也從左表返回所有的行(注釋:在某些數據庫中, LEFT JOIN 稱為 LEFT OUTER JOIN。)
  • RIGHT JOIN(右外聯接): 即使左表中沒有匹配,也從右表返回所有的行(注釋:在某些數據庫中, RIGHT JOIN 稱為 RIGHT OUTER JOIN。)
  • FULL JOIN(全外聯接): 只要其中一個表中存在匹配,就返回行(注釋:在某些數據庫中, FULL JOIN 稱為 FULL OUTER JOIN。)

 2.in 是作為一個條件查詢來使用的:

  select * from Persons where lastName in ('Adams', 'Carter')

 兩個語句的差別,可以使用sql優化器看看它們執行的效率:

select count(distinct(typ.orig_id)) from sch.NWSTYP typ left outer join sch.NWSATT att on typ.orig_id = att.Orig_id where att.fld_code = '4' and att.fld_val = '1101';
select count(distinct(typ.orig_id)) from sch.NWSTYP typ,sch.NWSATT att where typ.TYP_CODE = '1501' and typ.orig_id = att.Orig_id and att.fld_code = '4' and att.fld_val = '1101';

上面第二條Sql 是默認使用了 inner join 來使用的。

網上查的還有提到exist 

找了一篇文章:

http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx

可以看看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM