INNER JOIN SQL Query中的IF条件

时间:2011-08-10 03:48:14

标签: sql sql-server

我在编写SQL查询时遇到问题。这是关于我的问题的插图。 我在数据库中有两个表,如下所示:

| Table A    |          | Table B     |

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

上述表格是相关的。 表B 中的 idReference 指的是表A 中的 idPriority 如果 idPriority 的值为 NULL ,则 idReference 应引用 idTableA < / strong>即可。希望你们得到插图,可以帮助我解决这个问题。 Thx提前。

3 个答案:

答案 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)