Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在最大值之前获取值_Sql_Max - Fatal编程技术网

Sql 在最大值之前获取值

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| | 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 
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)