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

时间:2013-06-07 18:10:34

标签: mysql select

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

select * from my_table where id NOT IN (comma_delimited_string);

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

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

谢谢大家

1 个答案:

答案 0 :(得分:27)

您可以使用MySQL FIND_IN_SET功能:

SELECT *
FROM my_table
WHERE FIND_IN_SET(id, comma_delimited_string) = 0

附录:请注意,上面的查询可优化,因此如果您在id上有索引,MySQL将不会使用它。您必须决定使用FIND_IN_SET的相对简单性是否值得进行潜在的性能影响(我说可能是因为我不知道id是否被编入索引,或者您的表是否足够大这是一个问题)。