【问题标题】:Mysql select first then limitMysql先选择再限制
【发布时间】:2010-11-30 14:24:10
【问题描述】:

如何从 mysql 中选择最新的 5 行(例如,按 id 最新)然后按 asc 或 desc 排序??

问题是我有 1,2,3,4,5,6,7,我想选择最新的 2,例如 (6,7) 然后按 asc 或 desc 排序(6,7 或 7,6 ) ,但是如果我使用 orderby 那么它的限制是 (1,2) 或 (7,6) ,有没有办法从一个 sql 语句中做到这一点?

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你可以使用类似的东西

    SELECT * FROM TABLE WHERE ID IN (SELECT ID FROM TABLE WHERE X ORDER BY ID LIMIT 2) ORDER BY ID DESC
    

    【讨论】:

      【解决方案2】:

      如果你想要最新的 5 或 2,我没有得到,我在这里使用 2。但这是我刚刚写的没有测试的东西。

      SELECT * FROM table WHERE id IN (SELECT id FROM table ORDER BY id DESC LIMIT 2) ORDER BY id ASC/DESC;

      希望这会有所帮助! :)

      【讨论】:

        【解决方案3】:

        好的,我找到了解决方案,谢谢大家的努力和回答,

        我做了 2 列,ID 和 TSTAMP(用于时间戳),就像按 id asc 排序,tstamp asc/desc ... limit x 一样,所以它总是按 id 排序,然后按 tstamp 排序并限制正确的事情。

        嵌套查询对引擎来说很痛苦......

        谢谢

        【讨论】:

          【解决方案4】:
          Select * from TABLE order by id asc , time_stamp desc
          

          【讨论】:

            【解决方案5】:

            为什么你不能做一些事情,比如

            SELECT *
            FROM   TABLE
            WHERE (TABLE.primary_key IN (
              SELECT   TABLE.primary_key
              FROM     TABLE
              ORDER BY TABLE.id ASC
              LIMIT    2
            ))
            ORDER BY TABLE.id DESC
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多