擅长:python、mysql、java
<p>我认为这需要混合使用字符串格式和占位符(因为在<code>vals</code>中,每个项目需要一个<code>%s</code>):</p>
<pre><code>vals = [4, 8, 15, 16, 23, 42]
query = 'select distinct(my_col) from my_table where my_col in ('
query += ', '.join(['%s'] * len(vals))
query += ')'
cursor.execute(query, vals)
theset = {t[0] for t in cursor.fetchall()}
theboollist = [v in theset for v in vals]
</code></pre>
<p>这种方法应该保证发送给DB的数据量(对于<code>where ... in</code>子句)和从中得到的数据量都是<code>O(N)</code>,其中<code>N</code>等于{<cd6>};我认为逻辑上不可能比big-O更好。在</p>