【发布时间】:2011-02-16 16:52:50
【问题描述】:
我发现 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 是 ads_urls 表的一列,其值是逗号分隔的整数,例如4,2 或 2,7,3 等
因此,如果 hide_from_publishers 包含相同的上述两个值,它应该只返回“4,2”的记录,但它返回两个记录
现在,如果我将第二组的 hide_for_columns 的值更改为 3,2,7 并再次运行查询,它将返回正确输出的单个记录。
如果我在那里使用直接值而不是 hide_from_publishers,即 (2,7,3),它会识别并返回单个记录。
对这个奇怪的问题有什么想法还是我做错了什么?
【问题讨论】:
-
发布查询会产生错误
status = 1 and and ads.id = 23double AND