select T.A_ID,D.DATACONTENT from tablea T Inner join TABLEB D ON T.A_ID=D.A_ID
Where T.DATA_TYPE = 1
Union All
select T.A_ID,D.DATACONTENT from tablea T Inner join TABLEC D ON T.A_ID=D.A_ID
Where T.DATA_TYPE = 0
Where T.DATA_TYPE = 1
Union All
select T.A_ID,D.DATACONTENT from tablea T Inner join TABLEC D ON T.A_ID=D.A_ID
Where T.DATA_TYPE = 0
TABLEA
A_ID(INT) DATA_TYPE(BIT) DATA_ID(INT) TABLEB
B_ID(INT) DATACONTENT(VARCHAR) 两个表以‘列名(类型)’形式给出,如上。现在,想实现的是TABLEA内连接TABLEB或不连接,连接与否是根据DATA_TYPE来判定的,DATA_TYPE是bit类型,如果是1连接TABLEB,如果是0则不连接,连接关联字段是DATA_ID与B_ID。 最后,想要选出三个字段(A_ID,DATA_TYPE,DATACONTENT)的结果.SQL是不是该这么写.
select A_ID,DATA_TYPE
from TABLEA
where DATA_TYPE = 0
union all
select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
from TABLEA
inner join TABLEB
on TABLEA.DATA_ID = TABLEB.B_ID
where DATA_TYPE = 1
路过的,点拨一下!!!
select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
from TABLEA
inner join TABLEB
on TABLEA.DATA_ID = TABLEB.B_ID
where DATA_TYPE = 1如果需要把talea连接不到的也显示
select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
from TABLEA
left join TABLEB
on TABLEA.DATA_ID = TABLEB.B_ID
union
相当于把2个结果集合成一个。