mysql:如果列表字段中有一个数字,则选择行(即userIDs=";1,2,3";,从userIDs中1的表中选择*)
我将ID列表存储在字段中(我所说的列表是指mysql:如果列表字段中有一个数字,则选择行(即userIDs=";1,2,3";,从userIDs中1的表中选择*),mysql,list,Mysql,List,我将ID列表存储在字段中(我所说的列表是指val1、val2、val3,…),我想从列表中字段包含valX的表中选择行 我原以为这样行得通,但显然不行:( currentMessages、removedMessages和readMessages是ID存储为列表的字段 我也试过了 SELECT * FROM userbulletins WHERE "25" IN(`currentMessages`) 两者都不返回任何内容(并且应该在我的测试数据库中返回1行) 知道我做错了什么吗?或者这是可
val1、val2、val3,…
),我想从列表中字段包含valX的表中选择行
我原以为这样行得通,但显然不行:(
currentMessages、removedMessages和readMessages是ID存储为列表的字段
我也试过了
SELECT *
FROM userbulletins
WHERE "25" IN(`currentMessages`)
两者都不返回任何内容(并且应该在我的测试数据库中返回1行)
知道我做错了什么吗?或者这是可能的吗?
谢谢!您可以为此目的使用:
SELECT *
FROM userbulletins
WHERE FIND_IN_SET("25", `currentMessages`)
同样值得考虑的是,如果在单个单元格中没有值列表,那么采用不同的设计是否会更好。我建议您阅读上的这篇维基百科文章。您可以使用:
SELECT *
FROM userbulletins
WHERE FIND_IN_SET("25", `currentMessages`)
同样值得考虑的是,如果在单个单元格中没有值列表,那么采用不同的设计是否会更好。我建议您阅读上的这篇维基百科文章。如果我理解正确,您有一个非规范化的表,
currentMessages
值可以是“val1,val2,val3,…”如果要查找其中25是其中一个值的行,请使用:
…但我真的建议您规范化数据,以简化查询。如果我理解正确,您有一个非规范化的表,其中
currentMessages
值可以是“val1,val2,val3,…”,并且您希望查找其中25是这些值之一的行。如果是,请使用:
…但我真的建议您规范化数据以使查询更容易。这是因为
中的不是这样工作的。IN用于指定的值列表或子查询产生的列表
您必须将currentMessages表示为字符串,在这种情况下,像“%|25 |%”这样的currentMessages或像“25 |%”这样的currentMessage或像“%|25”这样的currentMessage或currentMessage='25'
将无法正常工作,或者您必须有另一个表(或其中的几个表),以便
SELECT * FROM userbulletins
WHERE 25 IN (SELECT * FROM `currentMessages` WHERE....)
--在这种情况下,我会建议消息(id、[标题、内容等]、状态{current、removed、read})
fakeEDIT:FIND_IN_SET的解决方案比我的同类选项好,但我仍然建议使用一个表。这是因为中的不是那样工作的。IN用于指定的值列表或子查询产生的列表
您必须将currentMessages表示为字符串,在这种情况下,像“%|25 |%”这样的currentMessages或像“25 |%”这样的currentMessage或像“%|25”这样的currentMessage或currentMessage='25'
将无法正常工作,或者您必须有另一个表(或其中的几个表),以便
SELECT * FROM userbulletins
WHERE 25 IN (SELECT * FROM `currentMessages` WHERE....)
--在这种情况下,我会建议消息(id、[标题、内容等]、状态{current、removed、read})
fakeEDIT:FIND_IN_SET的解决方案比我喜欢的解决方案要好,但我仍然建议使用一个表。我曾考虑过对其进行规范化,但该网站太大了,因此为此添加三个表似乎有些过火。这意味着比现在多了三个表;当前、删除和阅读消息各一个表s、 感谢您提供的解决方案!我曾考虑过对其进行规范化,但该网站太大了,因此为此添加三个表似乎有些过火。这意味着比现在多了三个表;每个表用于当前、删除和阅读邮件。感谢您提供的解决方案!