sql中join與left-join圖解區別


 
  select a.*  from YG_BRSYK a 
  left join(SELECT DISTINCT SYXH,
                        STUFF((SELECT '、'+MS FROM #lsb where SYXH=t.SYXH FOR XML PATH('')),1,1,'') AS MS
                        FROM #lsb as t) c on a.SYXH=c.SYXH WHERE c.MS IS NOT NULL order by RYBQ 
--注:left join...on 為左關聯,保留左邊所有的數據,右表沒有的數據為NULL值。加where條件控制表的輸出C.MS不為NULL。因此查詢的個數與c表一致760個

 

  select a.*  from YG_BRSYK a --801331個

 

SELECT DISTINCT SYXH,
                        STUFF((SELECT '、'+MS FROM #lsb where SYXH=t.SYXH FOR XML PATH('')),1,1,'') AS MS
                        FROM #lsb as t 670個

 

 

 

https://www.cnblogs.com/lcs-java/articles/8465605.html

 

t1表內容如下:

t2表內容如下:

下面來簡述join和left join/right join的區別:

inner join

select * from t1 inner join t2 on t1.id = t2.id;

公共部分的數據才會被查詢出來;

left join

select * from t1 left join t2 on t1.id = t2.id;

查詢出來的結果和前表記錄數一樣多;

right join

select * from t1 right join t2 on t1.id = t2.id;

能轉化為

 


免責聲明!

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



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