【发布时间】:2013-07-30 17:53:12
【问题描述】:
我的选择看起来像这样,它从最大的 id 返回字段...
SELECT * FROM Pontos WHERE IdPonto = (SELECT MAX(IdPonto) FROM Pontos)
但现在我只想选择第二大的字段。
【问题讨论】:
标签: android sql performance sqlite select
我的选择看起来像这样,它从最大的 id 返回字段...
SELECT * FROM Pontos WHERE IdPonto = (SELECT MAX(IdPonto) FROM Pontos)
但现在我只想选择第二大的字段。
【问题讨论】:
标签: android sql performance sqlite select
SELECT * FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1
【讨论】:
我似乎在标准 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));
希望对你有帮助。
【讨论】:
这是用标准 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)
)
【讨论】:
这是一种方法:
SELECT * FROM Pontos ORDER BY Id DESC LIMIT 1 OFFSET 1
(不太确定 sqlite 语法,但请阅读此 SO 线程以获取更多信息:Sqlite LIMIT / OFFSET query)
编辑:我认为在这种情况下没有必要运行嵌套查询。
【讨论】:
SELECT * FROM Pontos WHERE IdPonto = (SELECT IdPonto FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1) 应该可以工作。
【讨论】: