擅长:python、mysql、java
<p>是的,您可以使用SQL的<code>IN()</code>谓词将列与一组值进行比较。这是标准SQL,每个SQL数据库都支持它。在</p>
<p>在<code>IN()</code>谓词变得效率太低或仅仅超过SQL查询的长度限制之前,可能会对放入<code>IN()</code>谓词的值的数量有一个实际的限制。最大的实际值列表取决于您使用的数据库(在Oracle中为1000,MS SQL Server为2000)。我的感觉是,如果你的列表超过几十个值,我会寻求另一个解决方案。在</p>
<p>例如,@ngroot建议在他的答案中使用临时表。有关此解决方案的分析,请参阅StackOverflow regular<a href="https://stackoverflow.com/users/55159/quassnoi">@Quassnoi</a>:<a href="http://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/" rel="nofollow noreferrer">Passing parameters in MySQL: IN list vs. temporary table</a>撰写的博客。在</p>
<p>以安全的方式将值列表参数化到SQL查询中可能会很棘手。你应该注意<a href="http://www.slideshare.net/billkarwin/sql-injection-myths-and-fallacies" rel="nofollow noreferrer">SQL injection</a>的风险。在</p>
<p>另请参阅有关堆栈溢出的流行问题:<a href="https://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause">Parameterizing a SQL IN clause?</a></p>