如何解决MYSQL 检查所有行并满足条件
我正在努力在 MYSQL 中获得所需的输出。
我有这样的桌子:
Result_ID | 代码 | 规则 |
---|---|---|
39566 | O | 0 |
39566 | G | 0 |
39566 | R | 1135 |
40115 | R | 1135 |
我想应用的标准是,如果代码 = R 并且规则 0 然后“通过”ELSE“手册”。但它应该检查所有具有相同 result_id 的行。
我试过这样写:
SELECT DISTINCT
[RESULT_ID],CODE,RULE,CASE WHEN CODE ='R' AND RULE_DETAIL_ID <> 0 THEN 'Passed'
WHEN CODE <> 'R' THEN 'MANUAL'
END as abc
但它只检查一行。如何让它检查所有行是否有相同的 result_id?
结果应该是这样的
Result_ID | 代码 | 规则 | abc |
---|---|---|---|
39566 | O | 0 | 手册 |
39566 | G | 0 | 手册 |
39566 | R | 1135 | 手册 |
40115 | R | 1135 | 通过 |
解决方法
一种可能的解决方案是使用 exists
关联相同的 Id 值
select *,case when exists (
select * from t x where x.result_id=t.result_id
and not( code='r' and rule != 0 )
) then 'MANUAL' else 'Passed' end
from t
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。