如果有两个表A和B:
Table A
id work_name
1 10001
2 10002
和
Table B
id work_id final_status
1 1 0
2 2 0
3 1 1
我必须只获取那些最终状态不是1的work_id 在Above Table中,输出应为2,因为work_id 1的final_status达到1。 我已经尝试了查询,但它没有给我想要的结果
我的查询:
select B.work_id from A inner join B on A.id = B.work_id where final_status!=1
我的结果:
1
2
我希望排除1,因为它已达到最终状态。
答案 0 :(得分:1)
有多种方法可以产生所需的输出:
max()
并过滤having
子句in()
和not in()
子查询的组合exists()
和not exists()
子查询的组合我更喜欢上一种方法,因为exists()
/ not exists()
不必实际从表B中获取数据:
select A.*
from A
where exists(select 1 from B where B.work_id=A.id and B.final_status=0)
and not exists(select 1 from B where B.work_id=A.id and B.final_status=1)