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