MYSQL 检查所有行并满足条件

时间:2021-05-13 21:10:56

标签: if-statement case

我正在努力在 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 通过

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用 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