MySql选择IN子句字符串逗号分隔

Udi*_*dan 13 mysql select

我需要以下列方式执行选择查询:

select * from my_table where id NOT IN (comma_delimited_string);
Run Code Online (Sandbox Code Playgroud)

实现这一目标的正确方法是什么?

考虑到我控制发送字符串的客户端代码,是否有更好的方法?(该字符串将容纳大约30个id,所以我试图避免发送30个参数,每个id一个).

谢谢你们

Ed *_*bbs 30

你可以使用MySQL FIND_IN_SET函数:

SELECT *
FROM my_table
WHERE FIND_IN_SET(id, comma_delimited_string) = 0
Run Code Online (Sandbox Code Playgroud)

附录:请注意,上面的查询不可优化,因此如果您有idMySQL 索引将不会使用它.你必须决定使用的相对简单性FIND_IN_SET是否值得潜在的性能损失(我说潜力因为我不知道是否id被索引或者你的表是否足够大以至于这是一个问题).

  • 我不认为`FIND_IN_SET`可以使用索引. (3认同)