请查看下表中的记录。
id employer current
-- ------- -------
1 IBM 0
1 Infosys 0
2 Microsoft 1
2 Google 0
3 Facebook 1
我想得到id
的列表,其中current
是所有行的0
,如下
期望输出
id employer current
-- ------- -------
1 IBM 0
1 Infosys 0
我构建了一个查询,如下所示;但是有一个单一的解决方案吗?请帮帮我。
SELECT * FROM tb_work where id NOT IN ( select id from tb_work where current = '1' )
您可以使用NOT EXISTS
进行以下操作:
SELECT *
FROM tb_work t1
WHERE NOT EXISTS (SELECT 1
FROM tb_work t2
WHERE t1.id = t2.id AND t2.current = 1)
如果你在某种程度上使它变得复杂,如果你做论文,你会在你的工作中看到正确的解决方案。像
SELECT * FROM [tb_work] WHERE current = '0'
为什么要使用"NOT IN"子句和子查询来使它变得复杂?让它变得简单。