如何解决带双重条件的 SQL 选择
我需要选择同时具有 status = pending & processing 的 parent_ids
,或者同时具有 status = cancelled 和 processing 的 parent_ids
。按 parent_id
分组。
我只设法获得了 parent_ids
处于待定、处理中或取消状态的状态,这不是我需要的。我需要双重条件。
我尝试过类似的东西:
select parent_id,status from tableName
where status = ('processing' and 'pending')
or status = ('processing' and 'canceled') group by parent_id
解决方法
SELECT parent_id
FROM tableName
GROUP BY parent_id
HAVING SUM(status = 'processing')
AND SUM(status IN ('pending','cancelling'));
查询会检查特定的 parent_id
行(至少一个)是否存在“正在处理”和一行“待处理”/“正在取消”(其中之一)。
或者你可以使用
SELECT DISTINCT parent_id
FROM tableName t1
JOIN tableName t2 USING (parent_id)
WHERE t1.status = 'processing'
AND t2.status IN ('pending','cancelling');
此查询执行相同的操作,但采用另一种形式。
另一种选择:
SELECT DISTINCT parent_id
FROM tableName t1
WHERE status = 'processing'
AND EXISTS ( SELECT NULL
FROM tableName t2
WHERE t1.parent_id = t2.parent_id
AND t2.status IN ('pending','cancelling') );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。