[英]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.