pen*_*ake 1 sql t-sql filtering where-clause
如果我需要选择一个数据来覆盖其他一些数据,我应该采用什么方法来构建我的SQL查询?
例如,我的
我想要从数据库中选择所有数据除了这个结果集:
SELECT *
FROM table1
WHERE table1.MarketTYpe = 'EmergingMarkets'
AND IsBigOne = 1
AND MarketVolume = 'MIDDLE'
AND SomeClass = 'ThirdClass'
Run Code Online (Sandbox Code Playgroud)
我应该用吗?
你能建议吗?
使用EXCEPT构造?
SELECT *
FROM table1
EXCEPT
SELECT *
FROM table1
WHERE table1.MarketTYpe = 'EmergingMarkets'
AND IsBigOne = 1
AND MarketVolume = 'MIDDLE'
AND SomeClass = 'ThirdClass'
Run Code Online (Sandbox Code Playgroud)
请注意,EXCEPT并NOT EXISTS使用"left anti semi join"提供相同的查询计划.
NOT IN (subquery with above)如果子查询中有NULL值,则可能无法给出正确的结果,因此我不会使用
我会避免WHERE子句中的否定因为它不能立即读取
因为评论显示迈克尔的答案......
有关"除某些行之外的所有行"的更多信息,请参阅以下内容: