【问题标题】:MYSQL check all rows and meet conditionsMYSQL检查所有行并满足条件
【发布时间】: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 的哪个版本?

标签: if-statement case


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多