0

我的选择看起来像这样,它从最大的 id 返回字段...

SELECT * FROM Pontos WHERE IdPonto = (SELECT MAX(IdPonto) FROM Pontos) 

但现在我只想选择第二大的字段。

4

5 回答 5

2

SELECT * FROM Pontos WHERE IdPonto = (SELECT IdPonto FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1)应该管用。

于 2013-07-30T14:16:52.003 回答
2

这将是一种方法:

SELECT * FROM Pontos ORDER BY Id DESC LIMIT 1 OFFSET 1

(不太确定 sqlite 语法,但请阅读此 SO 线程以获取更多信息:Sqlite LIMIT / OFFSET 查询

编辑:我认为在这种情况下没有必要运行嵌套查询。

于 2013-07-30T14:18:45.087 回答
0

这是用标准 SQL 编写的(它不使用 LIMIT 和 OFFSET)并且应该可以工作:

SELECT * FROM Pontos WHERE IdPontos = (
    SELECT MAX(t1.IdPontos) FROM Pontos t1
    WHERE t1.IdPontos not in (SELECT MAX(IdPontos) FROM Pontos)
)
于 2013-07-30T14:28:08.743 回答
0

我似乎在标准 SQL 和 SQLite 中完成这项工作。

select * from Pontos where IdPonto < (select max(IdPonto) from Pontos) and IdPonto = (select max(IdPonto) from Pontos where IdPonto < (select max(IdPonto) from Pontos));

希望能帮助到你。

于 2013-07-30T18:57:51.363 回答
0
SELECT * FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1
于 2013-07-31T14:39:45.743 回答