如何编写SQL查询Listings表中距离到期日最近的前10条有效房源
实现逻辑
你当前用的是SQL Server语法,按需求可直接按如下规则编写查询:
- 过滤条件加
Status = 1只保留有效房源,可选补充ListingExpirydate >= GETDATE()过滤已到期的房源,避免数据中状态未同步更新的脏数据干扰结果 - 排序时优先按
ListingExpirydate升序,等价于剩余到期天数从小到大排序,到期日相同的再按主键Id升序 - 用
TOP 10取前10条符合要求的结果
最终查询语句
SELECT TOP 10 * FROM Listings WHERE Status = 1 -- 若需要排除已经过期的房源,可保留下面这行条件 AND ListingExpirydate >= GETDATE() ORDER BY ListingExpirydate ASC, Id ASC;
如果你需要显式体现剩余到期天数的计算逻辑,也可以写成如下形式:
SELECT TOP 10 *, DATEDIFF(day, GETDATE(), ListingExpirydate) AS RemainingExpiryDays FROM Listings WHERE Status = 1 AND ListingExpirydate >= GETDATE() ORDER BY RemainingExpiryDays ASC, Id ASC;
内容的提问来源于stack exchange,提问作者I Love Stackoverflow
相关产品推荐
相关产品推荐

