2011-08-10 161 views
1

我在编写sql查询时遇到了问题。这是关于我的问题的插图。 我在数据库中具有2个表如下:INNER JOIN中的IF条件SQL查询

| Table A |   | Table B  | 

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

上述那些表是相关的。 id参考 in 表B是指idPriority表ABUT如果idPriority的值是NULL ,则idReference应该是指idTableA。希望你们能够获得插图并且可以帮助我处理这个问题。 Thx提前。

+0

THX的家伙。我有想法从你的答案中解决这个问题。多谢 ! – Andha

回答

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

下面的构造会为你工作吗?

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) 
1
select * 
from tableB b 

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