首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EXCEPT获取第二条记录

使用EXCEPT获取第二条记录
EN

Stack Overflow用户
提问于 2022-03-29 16:38:08
回答 3查看 65关注 0票数 0

我想从底层拿到第二张唱片。我试过了

代码语言:javascript
复制
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时,它起作用了,但这给了我第二张唱片。

EN

回答 3

Stack Overflow用户

发布于 2022-03-29 16:49:33

尝试使用偏移量和获取

代码语言:javascript
复制
select meetings_id from meetings ORDER BY meetings_date DESC 
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY

偏移量

去取

票数 2
EN

Stack Overflow用户

发布于 2022-03-29 16:46:39

只有在表中有>1行时,此解决方案才能工作。

代码语言:javascript
复制
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;

基于链接的答案。

您可能会得到一个错误或空的结果,因为没有倒数第二行。因此,在这种情况下,您的查询将是错误的。

票数 0
EN

Stack Overflow用户

发布于 2022-03-29 18:09:26

如果您真的因为某些奇怪的需求或琐事而想使用EXCEPT,那么您需要将TOP查询放入表表达式中:

代码语言:javascript
复制
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;

但这既不直观,也不有效。

  • 例子:db<>fiddle
  • 通过展示计划的比较,说明为什么EXCEPT是迄今为止提供的最糟糕的解决方案:db<>fiddle
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71665814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档