我在编写SQL查询时遇到问题。这是关于我的问题的插图。 我在数据库中有两个表,如下所示:
| Table A | | Table B |
| idTableA | | idTableB |
| idPriority | | idReference |
上述表格是相关的。 表B 中的 idReference 指的是表A 中的 idPriority 。 但如果 idPriority 的值为 NULL ,则 idReference 应引用 idTableA < / strong>即可。希望你们得到插图,可以帮助我解决这个问题。 Thx提前。
答案 0 :(得分:2)
双重连接方法,易于阅读
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
答案 1 :(得分:1)
以下结构适合您吗?
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)
答案 2 :(得分:1)
select *
from tableB b
join tableA a
on
a.idPriority = b.idReference
or
(a.idPriority IS NULL AND b.idReference = a.idTableA)