在逗号分隔的字段上查询多个值

时间:2012-06-02 09:11:27

标签: mysql

作为示例,我将其作为列中的字段:

  

3,21,23,41,47,56,57,61,64,74,78,79,82,83,86,90,94

这些是ID,我试图找出如何搜索我尝试过的多个数字,例如:

SELECT * FROM table WHERE status='A' AND (FIND_IN_SET('3,64', myids))

如果3和64在一起并且输出每个值的find_in_set可能会有点痛苦,这似乎只有效。

有更好的解决方案或建议吗?

4 个答案:

答案 0 :(得分:2)

FIND_IN_SET()只能找到第一个参数的位置(参见MySQL Reference, String Functions)。

您可以为要查找的每个ID使用一个FIND_IN_SET

SELECT * FROM table WHERE status='A' AND
  FIND_IN_SET('3', myids) AND FIND_IN_SET('64', myids)

答案 1 :(得分:2)

SELECT * FROM table WHERE status='A' AND myids in (3, 64)

你可以试试这个。

答案 2 :(得分:0)

SELECT * FROM table WHERE myids REGEXP REPLACE(" 3,64",',','(\,| $)|');

答案 3 :(得分:-2)

foreach($ids as $id)
{
  SELECT * FROM table WHERE status='A' AND (FIND_IN_SET($id, myids))
}

that check one by one and getting the result from table.