我想从底层拿到第二张唱片。我试过了
SELECT TOP 2 meetings_id FROM meetings ORDER BY meetings_date DESC
EXCEPT
SELECT TOP 1 meetings_id FROM meetings ORDER BY meetings_date DESC但是except中存在语法错误。
当我尝试删除order by时,它起作用了,但这给了我第二张唱片。
发布于 2022-03-29 16:49:33
发布于 2022-03-29 16:46:39
只有在表中有>1行时,此解决方案才能工作。
SELECT TOP 1 meetings_id FROM
(SELECT TOP 2 meetings_id, meetings_date FROM meetings
ORDER BY meetings_date DESC) x
ORDER BY meetings_date;基于这链接的答案。
您可能会得到一个错误或空的结果,因为没有倒数第二行。因此,在这种情况下,您的查询将是错误的。
发布于 2022-03-29 18:09:26
如果您真的因为某些奇怪的需求或琐事而想使用EXCEPT,那么您需要将TOP查询放入表表达式中:
SELECT meetings_id FROM
(
SELECT TOP (2) meetings_id
FROM dbo.meetings
ORDER BY meetings_date DESC
) AS bottom2
EXCEPT
SELECT meetings_id FROM
(
SELECT TOP (1) meetings_id
FROM dbo.meetings
ORDER BY meetings_date DESC
) AS bottom1;但这既不直观,也不有效。
EXCEPT是迄今为止提供的最糟糕的解决方案:db<>fiddlehttps://stackoverflow.com/questions/71665814
复制相似问题