簡體   English   中英

INNER JOIN SQL 查詢中的 IF 條件

[英]IF condition in INNER JOIN SQL Query

我在編寫 sql 查詢時遇到問題。 這是關於我的問題的說明。 我在數據庫中有 2 個表,如下所示:

| Table A    |          | Table B     |

| idTableA   |          | idTableB    |
| idPriority |          | idReference |  

上面的那些表是相關的。 表 B中的idReference指的是表 A中的idPriority 但是如果idPriority的值是NULL ,那么idReference應該是指idTableA 希望你們得到插圖並可以幫助我解決這個問題。 提前謝謝。

雙連接方式,易讀

select
  B.idTableB,
  isnull(A1.idPriority, A2.idTableA) as RefValue
from
  TableB as B
  left join TableA as A1 on A1.idPriority = B.idReference
  left join TableA as A2 on A1.idTableA = B.idReference

單連接方法,兩個 IsNulls():

select
  B.idTableB,
  isnull(A1.idPriority, A1.idTableA) as RefValue
from
  TableB as B
  left join TableA as A1 on isnull(A1.idPriority, A1.idTableA) = B.idReference

以下構造對您有用嗎?

select *
from tableA join tableB on (join condition)
where (idpriority is not null)
union
select *
from tableA join tableB on (join condition)
where (idpriority is null)
select * 
from tableB b 

join tableA a 
on
    a.idPriority = b.idReference
    or
    (a.idPriority IS NULL AND b.idReference = a.idTableA)

暫無
暫無

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

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