我正在运行一个查询,希望从查询结果中选择第一行。如果表中有两行,则会返回结果,但如果只有一行,则不会返回任何内容。
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
ORDER BY
的TOP (n)
是毫无意义的 - 如果你想要获取数据的TOP (n)
,那么你的行按照什么排序呢?除非你指定了数据排序的 具体标准 - 否则它是完全随意的... - marc_sORDER BY
,那么你得到的是“第一”行 - 按照 SQL Server 认为可以的方式排序 - 你得不到一个特定的“第一”行 - 任何“第一”行... - marc_s