Sql 在最大值之前获取值
例如,给定此稀疏ID表: |id| | 1| | 2| | 3| | 6| | 7| 我得到: |id| | 7|Sql 在最大值之前获取值,sql,max,Sql,Max,例如,给定此稀疏ID表: |id| | 1| | 2| | 3| | 6| | 7| 我得到: |id| | 7| 即使这些值不是连续的,我如何才能获得刚好位于最高id之前的id?一般来说,您可以先找到已完成的最大id,然后找到小于最大id的最大id 与 SELECT TOP 1 id FROM Comics ORDER BY ID DESC 注意:这是transact-sql语法,请根据您的供应商使用rownum或limit 要获得第2排,您可以执行以下操作 SELECT TOP 1 ID
即使这些值不是连续的,我如何才能获得刚好位于最高id之前的id?一般来说,您可以先找到已完成的最大id,然后找到小于最大id的最大id 与
SELECT TOP 1 id FROM Comics ORDER BY ID DESC
注意:这是transact-sql语法,请根据您的供应商使用rownum或limit
要获得第2排,您可以执行以下操作
SELECT TOP 1 ID
FROM
(SELECT TOP 2 id
FROM Comics
ORDER BY ID DESC)
ORDER BY ID ASC
这也行
SELECT
max(id)
FROM
Comics
WHERE id < (SELECT max(id) FROM Comics)
按id DESC订购,然后在程序中选择第二个。顺便说一句,你的数据库是什么?或者按降序排序使用OFFSET跳到第二行,并限制为仅返回1。我不知道SQL中可以有SQL这样的SQL,谢谢。@Joseph这种技术被称为派生表或内联视图。如果你使用mysql或postgre,则查询更简单,只需使用offest功能即可
SELECT max(id) FROM Comics
SELECT TOP 1 id FROM Comics ORDER BY ID DESC
SELECT TOP 1 ID
FROM
(SELECT TOP 2 id
FROM Comics
ORDER BY ID DESC)
ORDER BY ID ASC
SELECT
max(id)
FROM
Comics
WHERE id < (SELECT max(id) FROM Comics)