【问题标题】:Using OFFSet clause with Except in SQL在 SQL 中使用带有 except 的 OFFSet 子句
【发布时间】:2020-04-14 10:57:17
【问题描述】:

我正在尝试使用此偏移量,但我似乎无法理解此偏移量适合的位置。

任何帮助将不胜感激

CREATE PROCEDURE [dbo].[get_bidLossModified]
    @current_winner varchar (30), 
    @limit varchar(30)
AS
BEGIN
    SELECT 
        vehicle_id, bid_value 
    FROM 
        auctionDetails 
    WHERE 
        current_winner = @current_winner 
    OFFSET (@limit - 1)*10 ROWS
    FETCH NEXT 10 ROWS ONLY

    EXCEPT 

    SELECT  
        vehicle_id, MAX(bid_value)
    FROM    
        auctionDetails 
    WHERE 
        status = '0' 
    GROUP BY 
        vehicle_id
END

【问题讨论】:

  • OFFSET ... FETCH.... 需要在 ORDER BY 子句上 - 没有任何排序,跳过记录没有任何意义....
  • 是的,我知道我只是在这里上传了一个不完整的代码,谢谢

标签: sql-server database stored-procedures fetch offset


【解决方案1】:

我怀疑你想使用子查询:

SELECT ad.*
FROM ((SELECT vehicle_id, bid_value
       FROM auctionDetails
       WHERE current_winner=@current_winner 
       ) except
       (SELECT  vehicle_id, MAX(bid_value)
        FROM auctionDetails 
        WHERE status = 0   -- probably a number so removed quotes
        GROUP BY vehicle_id
       )
      ) ad
ORDER BY vehicle_id, bid_value
OFFSET  (@limit - 1)*10 ROWS
FETCH NEXT 10 ROWS ONLY;

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多