gpt4 book ai didi

sql - SQL Server 中 except 的替代

转载 作者:行者123 更新时间:2023-12-02 01:16:49 26 4
gpt4 key购买 nike

我想从下表中获取结果。获取除 Id=102 的 Apple 之外的所有 ID 和树类型。

Id         TreeType 
---------------------
99 Apple
99 Mango
102 Orange
101 Blackberry
102 Apple

结果将是。

Id         TreeType 
---------------------
99 Apple
99 Mango
102 Orange
101 Blackberry

我们可以从以下查询中获取结果的一种方法。

select id, TreeType
from x

except

select id, TreeType
from x
where id = 102 and TreeType = 'Apple'

是否可以从一条 select 语句中获取结果?

我只是想避免,因为在实际情况下,这对我来说成本非常高。

最佳答案

就这样怎么样

SELECT id,TreeType
FROM x
WHERE NOT(id = 102 AND TreeType = 'Apple')

一开始这确实让我困惑 - 我想思考 WHERE (id <> 102 AND TreeType <> 'Apple')可以,但不行。当您重新将其视为 bool 表时,这是有道理的 - 在这种情况下,它会是

id    opr.    TreeType
======================
true AND false -- 99 apple: false
true AND true -- 99 mango: true
true AND false -- 102 orange: false
true AND true -- 101 blackberry: true
false AND true -- 102 apple: false

使用上面的语法,我们只得到我们想要定位为 true 的行并使用 NOT .

id    opr.    TreeType
======================
false AND false -- 99 apple: not(false) = true
false AND false -- 99 mango: not(false) = true
true AND false -- 102 orange: not(false) = true
false AND true -- 101 blackberry: not(false) = true
true AND true -- 102 apple: not(true) = false

关于sql - SQL Server 中 except 的替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34862568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com