MySQL ORDER BY + LIMIT + OFFSET语句:如何OFFSET firts,然后才用ORDER BY排序

时间:2016-04-26 16:33:28

标签: mysql sql sorting

我有一个由ID,NAME,PRICE和DATE列组成的表。

我尝试编写寻呼机式导航,因为表格中有很多条目,因此查看整个SELECT的输出已经变得不舒服。

我已写下以下请求:

SELECT id
      , name
      , price
      , date 
  FROM mytable 
 ORDER 
    BY name asc 
 LIMIT 30 OFFSET _here's_my_offset_depending_on_the_current_position_

这只在示例中正常工作。当我尝试按价格对它进行排序时,似乎MYSQL首先使用ORDER BY对整个表进行排序,并且只有在它产生偏移之后才会进行排序。

如何更改此行为,换句话说,如何创建偏移量,而不是按照我喜欢的方式对结果行进行排序?

1 个答案:

答案 0 :(得分:2)

如果你使用子查询,它可以很容易:

SELECT * FROM (
  SELECT id, name, price, date FROM mytable LIMIT 30 OFFSET _offset_
) AS page ORDER BY page.name asc