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

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

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

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

考虑到我可以控制发送字符串的客户端代码,有没有更好的方法?(该字符串将包含大约30个id,因此我试图避免发送30个参数,每个id一个)。

谢谢你们

回答:

您可以使用MySQL FIND_IN_SET函数:

SELECT *

FROM my_table

WHERE FIND_IN_SET(id, comma_delimited_string) = 0


:请注意,上面的查询 无法 优化,因此,如果您在idMySQL

上有索引,则不会使用它。您必须决定使用相对简单FIND_IN_SET是否值得潜在的性能损失(我之所以说潜在的原因是因为我不知道是否对id索引进行了索引或者您的表是否足够大,这值得关注)。

以上是 MySQL的选择IN子句字符串逗号分隔 的全部内容, 来源链接: utcz.com/qa/434018.html

回到顶部