gpt4 book ai didi

sql - T-SQL 选择前 1

转载 作者:行者123 更新时间:2023-12-05 01:11:02 27 4
gpt4 key购买 nike

我正在运行一个查询,我想从查询结果中选择第一行。如果表中有两行,它将返回一个结果,但如果只有一行,则不会返回任何结果。

select TOP 1 u.ID
from [dbo].[User] u
where u.ID <> '5dc89076-e554-42f2-a9ae-787b20f6f56b' AND u.gender != 'male'
except
select [dbo].[Like].likes
from [dbo].[Like]
where [dbo].[Like].[user] = '5dc89076-e554-42f2-a9ae-787b20f6f56b'
except
select [dbo].[Dislike].dislikes
from [dbo].[Dislike]
where [dbo].[Dislike].[user] = '5dc89076-e554-42f2-a9ae-787b20f6f56b'

此查询不返回任何内容

select u.ID
from [dbo].[User] u
where u.ID <> '5dc89076-e554-42f2-a9ae-787b20f6f56b' AND u.gender != 'male'
except
select [dbo].[Like].likes
from [dbo].[Like]
where [dbo].[Like].[user] = '5dc89076-e554-42f2-a9ae-787b20f6f56b'
except
select [dbo].[Dislike].dislikes
from [dbo].[Dislike]
where [dbo].[Dislike].[user] = '5dc89076-e554-42f2-a9ae-787b20f6f56b'

此查询返回 Id:9EF5B83E-319A-4E2F-88A1-E67227DBFDCE

最佳答案

select TOP 1 u.ID
from ...
except
...

意味着它首先运行第一个 select,然后取前 1 个结果,最后运行第二个和第三个 select 以确定要排除的内容。

这不是你想要的。您想运行三个查询,排除行,最后取前 1 个结果。

一个有效的语法是

select top 1 ID
from (
select u.ID
from ...
except
...
) as q

还有其他方法可以产生相同的结果,但这是我要采用的方法。

关于sql - T-SQL 选择前 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833648/

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