sqlite 在一个查询中多次使用相同的IN(绑定

nsc4cvqm  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(180)

我想重写WHERE a IN (<listA>) OR b IN (<listA>),这样就不必使用<listA>(我针对查询绑定的值列表)两次或更多次。
这个是可能的吗?

ttcibm8c

ttcibm8c1#

你不能真的这么做。但是,您可以这样做:

with listA as (
      select 'item1' as item union all
      select 'item2' union all
      . . .
      select 'itemn'
     )
select t.*
from table t
where a in (select item from listA) or
      b in (select item from listA);

无论如何,表达式in (<listA>)可能不会执行预期的操作。如果值为'1,2,3',则这将构成一个包含一个元素('1,2,3')的列表,而不是包含三个元素的列表。

相关问题