簡體   English   中英

具有條件的SQL內部聯接

[英]SQL INNER JOIN with IF CONDITION

我有以下SQL語句

 Select 
      a.A,
      a.B,
      b.C
 FROM table a 
 INNER JOIN table b
 on (a.A =  b.A)
 WHERE a.A = @A

我的問題是,當表b中沒有A匹配表a中的A時,將不會顯示所有的A,BC。 僅當存在一個滿足aA = bA的值時,它才起作用。即使不滿足aA = bA,我也如何獲得所有A,B和C。我試圖使用顯然不起作用的IF語句。

SELECT
      a.A,
      a.B,
      b.C
 FROM table_a  a
 LEFT JOIN table_b b
 ON (a.A =  b.A)
 WHERE a.A = @A

當然,如果連接條件不匹配,您將無法從bC獲得任何信息,但是您將獲得表a中的所有行

如果您確實想要table_a和table_b中的所有行,請改用FULL OUTER JOIN。

使用LEFT JOIN將從左側表(此處為table_a)中獲取所有內容,如果右側表(此處為table_b)中存在匹配記錄(由JOIN條件指示),則將返回該表中的數據。 如果右表中沒有與左表中的記錄相對應的記錄,則將為您從右表中選擇的那個/那些列返回NULL。

SELECT
    a.A,
    a.B,
    ISNULL(b.C, 'No Match In table_b')
FROM table_a a
LEFT JOIN table_b b
ON (a.A = b.A)
WHERE a.A = @A

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM