INTERSECT 子句
INTERSECT
子句仅返回来自第一个和第二个查询的结果行。查询必须匹配列的数量、顺序和类型。INTERSECT
的结果可以包含重复行。
如果没有指定括号,则多个 INTERSECT
语句从左到右执行。INTERSECT
运算符的优先级高于 UNION
和 EXCEPT
子句。
条件可以是基于您的要求的任何表达式。
示例
这是一个简单的例子,找出数字 1 到 10 与数字 3 到 8 的交集:
结果:
当您有两个共享公共列(或列)的表时,INTERSECT
非常有用。只要结果包含相同的列,您就可以交集两个查询的结果。例如,假设我们有数百万行的历史加密货币数据,其中包含交易价格和交易量:
现在假设我们有一个名为 holdings
的表,包含我们持有的加密货币列表以及币的数量:
我们可以使用 INTERSECT
来回答诸如 “我们持有的哪些币的交易价格超过 $100?” 之类的问题:
结果:
这意味着在某些时候,比特币和以太坊的交易价格超过了 100(至少在我们这个例子中的数据是这样)。
INTERSECT DISTINCT
注意在之前的查询中,我们有多个比特币和以太坊的持有记录交易价格超过 $100。去除重复行可能会很有用(因为它们只重复我们已经知道的内容)。您可以在 INTERSECT
后添加 DISTINCT
来消除结果中的重复行:
结果:
另请参阅