多个值 IN
通常 IN 与一个值一起使用:
SELECT * FROM data WHERE f1 IN (<subquery>)
可以将它与多个值一起使用:
SELECT * FROM data WHERE f1 IN (<subquery>) OR f2 IN (<subquery>);
但是我可以删除重复项,例如:
SELECT * FROM data WHERE ANY(f1, f1) IN (<subquery>)
我尝试使用 CTE,但它也需要子查询。
Normally IN is used with one value:
SELECT * FROM data WHERE f1 IN (<subquery>)
It is possible to use it with multiple values:
SELECT * FROM data WHERE f1 IN (<subquery>) OR f2 IN (<subquery>);
But can I remove duplication, something like:
SELECT * FROM data WHERE ANY(f1, f1) IN (<subquery>)
I tried to use CTE, but it also require subquery.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设您有列
col1
、col2
和col3
并且您正在查找col1
和col2
在子查询中(为了便于说明),您可以执行以下操作:只要
的形式为(粗略)select col1,col2从
,那么您最终会得到不同的(col1,col2,col3)
三元组,其中(col1,col2)
对出现在<子查询>
。Assuming you have columns
col1
,col2
, andcol3
and that you're looking forcol1
andcol2
in your subquery (for the sake of illustration), you can do something like:As long as
<subquery>
is of the (rough) formselect col1,col2 from <blah>
, then you'll end up with distinct(col1,col2,col3)
triples where(col1,col2)
pairs appear in<subquery>
.我可以用集合运算符来写:
I might write this in terms of set operators:
虽然这两种解决方案都有效,但我发现最快(不幸的是不是最短)的方法是使用 CTE:
While both solutions works, I have found that fastest (unfortunately not shortest) way is to use CTE: