gpt4 book ai didi

mysql - 在 MySQL 问题中搜索多个值

转载 作者:行者123 更新时间:2023-11-29 06:08:37 24 4
gpt4 key购买 nike

我试图在数据表中搜索两个关键字,但遇到了以下问题:即使我知道大约有 36 个关键字,以下内容也不会返回任何结果。

有人可以帮我写一个更好的查询吗?

SELECT user_id, name, value
FROM data
INNER JOIN fields ON data.field_id = fields.id
WHERE name IN ('Type', 'Category')
AND value = 'Keyword 1'
AND value = 'Keyword 2' /* If I use OR it returns 50 records of those +14 are irrelevant*/
GROUP BY user_id
HAVING COUNT(user_id)>1
ORDER BY value

我错过了什么吗?

最佳答案

注意添加括号:

SELECT user_id, name, value
FROM data
INNER JOIN fields ON data.field_id = fields.id
WHERE name IN ('Type', 'Category')
AND (value = 'Keyword 1'
OR value = 'Keyword 2')
GROUP BY user_id
HAVING COUNT(user_id)>1
ORDER BY value

SQL 从左到右绑定(bind),所以

WHERE name IN ('Type', 'Category') AND value = 'Keyword 1' OR value = 'Keyword 2'

相当于

WHERE (name IN ('Type', 'Category') AND value = 'Keyword 1') OR value = 'Keyword 2'

这样您就可以看到额外记录的来源 - 所有 value = 'Keyword 2' 的记录都将包含在内,无论名称如何。

当然,你也可以这样写:

WHERE name IN ('Type', 'Category') AND value IN ('Keyword 1', 'Keyword 2')

这消除了优先级问题。

关于mysql - 在 MySQL 问题中搜索多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202372/

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