跳到主要内容
跳到主要内容

INTERSECT 子句

INTERSECT 子句仅返回来自第一个和第二个查询的结果行。查询必须匹配列的数量、顺序和类型。INTERSECT 的结果可以包含重复行。

如果没有指定括号,则多个 INTERSECT 语句从左到右执行。INTERSECT 运算符的优先级高于 UNIONEXCEPT 子句。

条件可以是基于您的要求的任何表达式。

示例

这是一个简单的例子,找出数字 1 到 10 与数字 3 到 8 的交集:

结果:

当您有两个共享公共列(或列)的表时,INTERSECT 非常有用。只要结果包含相同的列,您就可以交集两个查询的结果。例如,假设我们有数百万行的历史加密货币数据,其中包含交易价格和交易量:

现在假设我们有一个名为 holdings 的表,包含我们持有的加密货币列表以及币的数量:

我们可以使用 INTERSECT 来回答诸如 “我们持有的哪些币的交易价格超过 $100?” 之类的问题:

结果:

这意味着在某些时候,比特币和以太坊的交易价格超过了 100,而DOGEFI和比特币钻石的交易价格从未超过100,而 DOGEFI 和比特币钻石的交易价格从未超过 100(至少在我们这个例子中的数据是这样)。

INTERSECT DISTINCT

注意在之前的查询中,我们有多个比特币和以太坊的持有记录交易价格超过 $100。去除重复行可能会很有用(因为它们只重复我们已经知道的内容)。您可以在 INTERSECT 后添加 DISTINCT 来消除结果中的重复行:

结果:

另请参阅