繁体   English   中英

SQL查询-获取左表中的所有匹配记录和剩余记录

[英]Sql query - get all matching records and remaining records in left table

我是sql新手,请协助。

表test1:

ID
1
2
3

表test2:

ID STATUS
1   DONE
2   FAILED

我需要如下结果集(test1中所有与条件匹配的行以及所有不在test2中的ID,条件为状态!='DONE')

2
3

我可以使用左联接,内部联接等轻松获得2或1,2,3的输出,但是获得2,3是一个挑战。 请协助。 请注意,上面是示例数据。 原谅格式错误,例如通过手机发布,无法从办公室的浏览器发布。

假设ID是两个表中的主键,则可以使用左外部联接,并请求外部 id列为NULL

SELECT t1.ID
FROM test1 t1
LEFT OUTER JOIN test2 t2 ON t1.ID=t2.ID
WHERE t2.STATUS <> 'Done' OR t2.ID IS NULL

OR条件的左侧是您原始的WHERE子句; 右侧添加test2 匹配的行。

您需要test2所有不是“ DONE”的test1 ID。 我建议NOT EXISTS

select t1.id
from test1 t1
where not exists (select 1
                  from test2 t2
                  where t2.id = t1.id and t2.status = 'DONE'
                 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM