【问题标题】:SQL: SELECT All the fields from the SECOND BIGGEST IDSQL:从第二大 ID 中选择所有字段
【发布时间】:2013-07-30 17:53:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: android sql performance sqlite select


    【解决方案1】:
    SELECT * FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1
    

    【讨论】:

      【解决方案2】:

      我似乎在标准 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));
      

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        这是用标准 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)
        )
        

        【讨论】:

          【解决方案4】:

          这是一种方法:

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

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

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

          【讨论】:

            【解决方案5】:

            SELECT * FROM Pontos WHERE IdPonto = (SELECT IdPonto FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1) 应该可以工作。

            【讨论】:

            • 有效...但是 SELECT * FROM Pontos ORDER BY IdPonto DESC LIMIT 1,1 具有相同的效果...但是感谢您的帮助我达到了它
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-20
            • 2013-03-05
            • 1970-01-01
            • 2017-05-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多