提问者:小点点

如何在mysql中使用逗号分隔值进行搜索


我有一个字符串comnid='1,2,3',需要查找具有这些id的行例如:

我有一张这样的桌子

colour     comnid
----------------------
black       1
blue        2
green       3
yellow      4

我需要返回comnid为1,2,3的行


共2个答案

匿名用户

CREATE TABLE colours_table
SELECT 'black'   colour,    1 comnid UNION ALL
SELECT 'blue'          ,    2        UNION ALL
SELECT 'green'         ,    3        UNION ALL
SELECT 'yellow'        ,    4        ;

SELECT * FROM colours_table;
colour | comnid
:----- | -----:
black  |      1
blue   |      2
green  |      3
yellow |      4
SET @comnid = '1,2,3';

SELECT GROUP_CONCAT(colour)
FROM colours_table
WHERE FIND_IN_SET(comnid, @comnid);
| GROUP_CONCAT(colour) |
| :------------------- |
| black,blue,green     |

db<;>此处小提琴

如果您需要在单独的行中使用GROUP_CONCAT:

SELECT colour
FROM colours_table
WHERE FIND_IN_SET(comnid, @comnid);

匿名用户

将是<代码>。。。 其中comnid在(1,2,3)中

请注意,查询可能容易受到SQL注入的攻击。 您需要正确地准备它,这取决于您使用的支持语言/库。 在中,PHP将使用函数mysqli_real_escape_string()