MYSQL检查所有行并满足条件
Posted
技术标签:
【中文标题】MYSQL检查所有行并满足条件【英文标题】:MYSQL check all rows and meet conditions 【发布时间】:2021-05-13 21:10:56 【问题描述】:我正在努力在 mysql 中获得所需的输出。
我有这样的桌子:
Result_ID | Code | Rule |
---|---|---|
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 | Code | Rule | abc |
---|---|---|---|
39566 | O | 0 | MANUAL |
39566 | G | 0 | MANUAL |
39566 | R | 1135 | MANUAL |
40115 | R | 1135 | Passed |
【问题讨论】:
MySql 的哪个版本? 【参考方案1】:一种可能的解决方案是使用 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
See DB Fiddle
【讨论】:
以上是关于MYSQL检查所有行并满足条件的主要内容,如果未能解决你的问题,请参考以下文章
MySQL存储过程——一一检查是不是满足某些条件;如果不满足,则退出程序并返回特定消息