mysql:如果数字在列表字段中则选择行(即 userIDs = "1,2,3",从表中选择 *,其中 userIDs 为 1)

标签 mysql list

我将 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/

相关文章:

php - 文件上传.js + MySQL

python - 类型错误 : unhashable type: list when using Python set of strings

java - java.io.File.listFiles(FilenameFilter filter) 是否已对文件对象进行排序?

php - 获取 WordPress 设置电子邮件

mysql - 如何在使用Where子句时优化/重构MySQL数据透视表性能

mysql - 如何使用参数重复mysql游标?

mysql - Select 语句完成时间太长

c# - 包含非 null 元素的列表最终包含 null。同步问题?

python - 列表中删除、删除和弹出的区别

python - 如何映射字符串列表和整数列表并打印具有第二大值的字符串