4

此 SQL 工作正常:

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

这不会:

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

它说:

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
4

1 回答 1

3

使用FIND_IN_SET

SELECT *
FROM table_name
WHERE FIND_IN_SET(id, ids);

参数 toIN必须是文字列表或子查询。CONCAT()返回一个字符串,而不是一个列表——SQL 不会重新解析结果。

于 2013-10-24T07:30:24.637 回答