gpt4 book ai didi

mysql - 使用 Group-by 和 case 语句来确定对值的覆盖

转载 作者:行者123 更新时间:2023-11-29 10:37:22 25 4
gpt4 key购买 nike

我想查询下表。

  key         |  id  | value
-------------+------+-------+
check-open | 0 | ENABLED
check-open | 156 | DISABLED
check-close | 0 | DISABLED
check-close | 156 | ENABLED

类似于以下内容。

 key         |  id  | value
-------------+------+-------+
check-open | 156 | DISABLED
check-close | 156 | ENABLED

Based on a couple of rules:
If ID=0 AND VALUE=DISABLED | disabled
If ID=0 AND VALUE=ENABLED | enabled
IF (ID=0 AND VALUE=DISABLED) AND (ID=156 AND VALUE=ENABLED) | enabled
IF (ID=0 AND VALUE=ENABLED) AND (ID=156 AND VALUE=DISABLED) | disabled

因此 ID=0 是默认值,任何其他定义的 ID 都会覆盖它。

我认为我走在正确的轨道上,但不确定如何继续处理 case 语句以覆盖存在除 0 以外的 ID 的情况。

SELECT KEY, 
CASE VALUE
WHEN 'ENABLED' THEN 'DISABLED'
ELSE 'ENABLED'
END
FROM APPLICATION_SETTING
WHERE KEY LIKE 'opt%'
AND (ID=0 OR ID=156)
GROUP BY KEY;

最佳答案

如果特定 KEY 没有 VALUE,您希望使用默认值 KEY 0

假设 KEY/ID 组合是唯一的:

select 
key,
coalesce(max(case when id <> 0 then value end) -- check for non default value
,max(value)) -- otherwise use the default
from tab
FROM APPLICATION_SETTING
WHERE KEY LIKE 'opt%'
AND (ID=0 OR ID=156)
GROUP BY KEY;

关于mysql - 使用 Group-by 和 case 语句来确定对值的覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46184207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com