EXCEPT 子句仅返回第一个查询结果中不存在于第二个查询结果中的那些行。
- 两个查询必须具有相同数量的列,且列的顺序和数据类型也必须相同。
EXCEPT的结果可能包含重复行。如果不希望出现这种情况,请使用EXCEPT DISTINCT。- 如果未指定括号,多个
EXCEPT语句将按从左到右的顺序执行。 EXCEPT运算符的优先级与UNION子句相同,但低于INTERSECT子句。
语法
EXCEPT() 还可像 BigQuery (Google Cloud) 一样,使用以下语法从同一表的结果中排除列:
示例
EXCEPT 子句的用法。
使用 EXCEPT 子句过滤数字
Query
Response
使用 EXCEPT() 排除特定列
EXCEPT() 可用于快速从结果中排除列。例如,如果我们想从某个表中选取所有列,但排除其中少数几个特定列,如下例所示:
Query
Response
在加密货币数据中使用 EXCEPT 和 INTERSECT
EXCEPT 和 INTERSECT 往往可以通过不同的布尔逻辑来实现类似效果;如果你有两个共享同一列 (或多列) 的表,这两个运算符都很有用。
例如,假设我们有几百万行历史加密货币数据,其中包含交易价格和成交量:
Query
Response
holdings 的表,其中包含我们持有的加密货币列表以及对应的币数量:
Query
EXCEPT 来回答这样的问题:“我们持有的哪些币种从未跌到 10 美元以下?”:
Query
Response
使用 EXCEPT DISTINCT
EXCEPT 后加上 DISTINCT,以去除结果中的重复行:
Query
Response