我需要以下列方式执行选择查询:
select * from my_table where id NOT IN (comma_delimited_string);
实现这一目标的正确方法是什么?
考虑到我控制发送字符串的客户端代码,是否有更好的方法? (该字符串将容纳大约30个id,所以我试图避免发送30个参数,每个id一个。)
谢谢大家
答案 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
是否被编入索引,或者您的表是否足够大这是一个问题)。