gpt4 book ai didi

sql - 具有 "IN"条件的 MySQL Select 查询问题

转载 作者:行者123 更新时间:2023-11-29 01:46:45 26 4
gpt4 key购买 nike

我发现一个奇怪的问题是 MySQL select 语句在 where 子句中有“IN”:

我正在尝试这个查询:

SELECT ads.* 
FROM advertisement_urls ads
WHERE ad_pool_id = 5
AND status = 1
AND ads.id = 23
AND 3 NOT IN (hide_from_publishers)
ORDER BY rank desc

在上面的 SQL 中,hide_from_publishers 是 advertisement_urls 表的一列,其值为逗号分隔的整数,例如4,2 或 2,7,3 等

因此,如果 hide_from_publishers 包含以上两个相同的值,它应该只返回“4,2”的记录,但它会返回两个记录

现在,如果我将第二组的 hide_for_columns 的值更改为 3,2,7 并再次运行查询,它将返回正确输出的单个记录。

如果我在那里使用直接值而不是 hide_from_publishers,即 (2,7,3),它会识别并返回单个记录。

关于这个奇怪的问题有什么想法还是我做错了什么?

最佳答案

元组 (1, 2, 3) 和字符串 "1, 2, 3" 是有区别的。前者是三个值,后者是一个字符串值,恰好在人眼中看起来像三个值。就 DBMS 而言,它仍然是一个单一的值。

如果您想要多个值与一条记录相关联,则不应将其存储为单个字段中的逗号分隔值,而应将其存储在另一个表中并将其连接起来。这样数据就会保持结构化,您可以将其用作查询的一部分。

关于sql - 具有 "IN"条件的 MySQL Select 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019440/

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