我将 ID 列表存储在字段中(列表是指 val1,val2,val3,...
),我想从表中选择行,其中该字段在列表中有 valX .
我以为这行得通,但显然行不通:(
SELECT *
FROM userbulletins
WHERE 25 IN `currentMessages`
OR 25 IN `removedMessages`
OR 25 IN `readMessages`
currentMessages、removedMessages 和 readMessages 是 ID 存储为列表的字段
我也试过
SELECT *
FROM userbulletins
WHERE "25" IN(`currentMessages`)
两者都没有返回(并且应该在我的测试数据库中返回 1 行)
知道我做错了什么吗?或者这是否可能? 谢谢!
最佳答案
如果我没理解错的话,你有一个非规范化表,其中 currentMessages
值可以是“val1,val2,val3,...”,你想找到其中一个值为 25 的行?如果是这样,请使用 FIND_IN_SET function :
WHERE FIND_IN_SET('25', `currentMessages`) > 0
OR FIND_IN_SET('25', `removedMessages`) > 0
OR FIND_IN_SET('25', `readMessages`) > 0
...但我真的建议规范化您的数据以使查询更容易。
关于mysql:如果数字在列表字段中则选择行(即 userIDs = "1,2,3",从表中选择 *,其中 userIDs 为 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3241799/