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存储过程——一一检查是不是满足某些条件;如果不满足,则退出程序并返回特定消息

检查是不是满足所有条件的查询

检查元组列表中的所有第一个元素是不是满足条件

如果满足 COUNT 条件,我可以应用 WHERE 子句吗?

MySQL选择满足特定行条件的所有列名

检查所有std :: tuple元素是否满足条件+设计问题