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