如何在MySQL中使用CONCAT函数在IN条件中?

4

这个SQL语句是有效的:

SELECT * from table_name where id IN (473,473,475);

这个不行:

SELECT * from table_name where id IN CONCAT('(', '473,473,475', ')');

It says:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'CONCAT('(', '473,473,475', ')')' at line 1

为什么?

我想要像这样使用它:

SELECT * from table_name where id IN CONCAT('(', ids, ')');

ids是一个varchar类型的数据,它包含类似于以下内容:

473,473,475

ids 里面有什么?如果它是一个数组,你应该使用应用层的连接方式,而不是数据库的连接方式。 - raina77ow
你为什么想要将 ( 与数字连接起来? - Suvarna Pattayil
如果你将 concat 函数用于 ids,你会得到类似 (123,456,789) 的东西。如果这是你的想法,你可以使用 SELECT * from table_name where id='(123,456,789)'。你可以使用 prepare statement。 - Suvarna Pattayil
1个回答

3

使用 FIND_IN_SET 函数:

SELECT *
FROM table_name
WHERE FIND_IN_SET(id, ids);
< p> IN 的参数必须是文字列表或子查询。 CONCAT()返回一个字符串,而不是列表 - SQL不会重新解析结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接