我需要按以下方式执行选择查询:
select * from my_table where id NOT IN (comma_delimited_string);
实现这一目标的正确方法是什么?
考虑到我控制发送字符串的客户端代码,是否有更好的方法? (该字符串将容纳大约 30 个 id,因此我试图避免发送 30 个参数,每个 id 一个参数)。
谢谢你们
您可以使用MySQLFIND_IN_SET http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set功能:
SELECT *
FROM my_table
WHERE FIND_IN_SET(id, comma_delimited_string) = 0
Addendum:注意上面的查询是not可优化,所以如果你有一个索引id
MySQL 不会使用它。您必须决定使用是否相对简单FIND_IN_SET
值得承受潜在的性能影响(我说潜在是因为我不知道是否id
已索引或者您的表足够大以至于需要考虑)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)