MySQL:如何从列中不存在的字符串列表中查找字符串

问题描述 投票:0回答:1

表名称:config

涉及的列名:name、value

我的配置表的值列存储用逗号分隔的文本值,如下所示:text1、text2、text3等

我有一个包含 28 个可能存在于该列中的文本字符串的列表。我需要一个查询来报告列表中的哪些文本字符串不会出现在名称列包含“config_name”的行的值列中。

以下方法不起作用:

SELECT value 
FROM config 
WHERE NOT EXISTS (
    SELECT value 
    FROM config 
    WHERE name = 'config_name' 
        and (value like '%text1%' or value like '%text2%' or value like '%text3%'));
sql mysql mysql-workbench
1个回答
0
投票

将所有 28 个值放入表格中,例如

known_values
。然后使用
LEFT JOIN+NULL
模式查找
config
表中不匹配的所有行。

使用

FIND_IN_SET()
匹配逗号分隔列表中的值。

SELECT k.value
FROM known_values AS k
LEFT JOIN config AS c
ON c.name = 'config_name' AND FIND_IN_SET(k.value, c.value)
WHERE c.value IS NULL
© www.soinside.com 2019 - 2024. All rights reserved.