MySQL ORDER BY + LIMIT + OFFSET 语句 : how to OFFSET firts and only then sort with ORDER BY

标签 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 对整个表进行排序,然后才进行偏移。

我如何改变这种行为,换句话说,我如何进行偏移,而不是按照我喜欢的方式对结果行进行排序?

最佳答案

如果你使用子查询,这会很容易:

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

关于MySQL ORDER BY + LIMIT + OFFSET 语句 : how to OFFSET firts and only then sort with ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870753/

相关文章:

php - 使用 php ajax 和 mysql 使用 secret 问题重置密码

mysql - 不显示其中一个条目具有不需要的值的名称

SQL/DB2 - 同时检索值和更新/增量

mysql - 加入谓词和比较运算符

mysql - SQL - 查询字符串是否包含 Column 中的部分值

php - 如何查询数据库的中间值并按最接近的排序?

xml - 使用由文本和数值组成的数据对 xslt 进行排序

mysql - 从mysql中的大表中快速选择随机行

Python MYSQLDB 插入语法错误

java - 如何从文件中读取内容并按字母顺序将该文件的内容排序到链接列表中?