请问一个子查询中进行逻辑判断的有关问题
请教一个子查询中进行逻辑判断的问题
表A
ID
1
2
3
...
表B
ID AID Flag
1 1 0
2 1 0
...........
表B的AID即为表A的ID
想查询表B中AID等于表A中对应ID的Flag,如果全为1就 设定为1,如果全为0则设定为0....
select * ,
(select 逻辑 from 表B where AID =a.ID ) as flag
from 表A a
该如何写这种语句呢?
------解决思路----------------------
这边,如果不是全1或全0,就设置为NULL,你可以根据需要修改
------解决思路----------------------
根据你顶楼的描述
全1 就为1
全0 就为0
此外的情况,我这边设置为NULL(这个情况是你所没有描述的,如果你要其它的处理要描述清楚)
因此,
当然是NULL了
表A
ID
1
2
3
...
表B
ID AID Flag
1 1 0
2 1 0
...........
表B的AID即为表A的ID
想查询表B中AID等于表A中对应ID的Flag,如果全为1就 设定为1,如果全为0则设定为0....
select * ,
(select 逻辑 from 表B where AID =a.ID ) as flag
from 表A a
该如何写这种语句呢?
------解决思路----------------------
SELECT T1.ID,CASE WHEN T2.C=1 THEN T2.Flag END [Flag]你参考一下
FROM A T1 LEFT JOIN
(SELECT AID,MAX(Flag)Flag,COUNT(DISTINCT Flag)C FROM B GROUP BY AID)T2
ON T1.ID=T2.AID
这边,如果不是全1或全0,就设置为NULL,你可以根据需要修改
------解决思路----------------------
根据你顶楼的描述
全1 就为1
全0 就为0
此外的情况,我这边设置为NULL(这个情况是你所没有描述的,如果你要其它的处理要描述清楚)
因此,
当然是NULL了