gpt4 book ai didi

mysql - 过滤行中的特定值

转载 作者:行者123 更新时间:2023-11-29 12:13:49 24 4
gpt4 key购买 nike

抱歉,如果我很难以书面形式展示它,但我绝对可以展示它。

假设我有这张 table :

(`name` varchar(5), `value_name` varchar(18))
;

INSERT INTO Alarms
(`name`, `value_name`)

VALUES
('cws-1', 'linkupdown'),
('cws-1', 'linkupdown'),
('cws-1', 'performancedegrade'),
('cws-1', 'performancedegrade'),
('cws-2', 'ICMP-Ping'),
('cws-2', 'linkupdown'),
('cws-3', 'performancedegrade')
;

表格是什么样的:

name      value_name
----- ----------
cws-1 linkupdown
cws-1 linkupdown
cws-1 performancedegrade
cws-1 performancedegrade
cws-2 ICMP-Ping
cws-2 linkupdown
cws-3 performancedegrade

我想要一个排除 value_name 列中具有“linkupdown”的任何记录的查询,其中 name = 'cws-1'

所以结果是:

name      value_name
----- ----------
cws-1 performancedegrade
cws-1 performancedegrade
cws-2 ICMP-Ping
cws-2 linkupdown
cws-3 performancedegrade

看起来很简单,但我似乎无法提出满足这个结果的查询。

感谢任何帮助。

最佳答案

您可以使用NOT EXISTS:

SELECT name, value_name
FROM Alarms AS a
WHERE name = 'cws-1'
AND NOT EXISTS (SELECT 1
FROM Alarms
WHERE a.name = name AND value_name = 'linkupdown')

上述查询返回所有与 value_name='linkupdown' 记录没有任何关系的 cws-1 命名记录。

仔细查看OP中所述的所需输出,这可能是您真正想要的:

SELECT name, value_name
FROM Alarms AS a
WHERE NOT (name = 'cws-1' AND value_name = 'linkupdown')

此查询将从警报中选择所有记录排除任何具有name = 'cws-1'的记录> value_name='linkupdown'

SQL Fiddle Demo

关于mysql - 过滤行中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201543/

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