我想重写类似:WHERE a IN (<listA>) OR b IN (<listA>)
的内容,这样我就不必使用<listA>
(这是我必须绑定查询的值列表)两次,或者多次。
这有可能吗?
感谢
答案 0 :(得分:0)
你真的不能这样做。但是,你可以这样做:
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'
)的列表,而不是包含三个元素的列表。