mysql - 列出多个条件的条目,分页

标签 mysql sql select sql-order-by limit

在以下情况下我需要你的帮助:

我有一个看起来像这样的表

----------------------------
| id | order | highlighted |
----------------------------
|  1 |   5   |      1      |
----------------------------
|  2 |   7   |      1      |
----------------------------
|  3 |   0   |      0      |
----------------------------
|  4 |   0   |      0      |
----------------------------
|  5 |   9   |      1      |
----------------------------
|        *and so on*       |
----------------------------
  • id 是 INT(11) AUTO_INCREMENT
  • order 是 INT(11)
  • highlighted 是 INT(11) 且仅包含“1”或“0”值

我想在一个查询中对这些条目进行排序,如下所示:

  • 首先显示所有 highlighted = '1' 按 order desc 排序的行
  • 以下是按 id desc 排序的 highlighted = '0' 的行
  • 获取的列表应该分页(limit 30, 10 - 例如第 3 页,每页 10 个项目)

结果应该是:

----------------------------
| id | order | highlighted |
----------------------------
|  5 |   9   |      1      |
----------------------------
|  2 |   7   |      1      |
----------------------------
|  1 |   5   |      1      |
----------------------------
|  4 |   0   |      0      |
----------------------------
|  3 |   0   |      0      |
----------------------------
|        *and so on*       |
----------------------------

有什么想法吗? 预先感谢您提出任何建议!

最佳答案

试试这个:

SELECT a.id, a.order, a.highlighted 
FROM tableA a
ORDER BY a.highlighted DESC, 
        (CASE WHEN a.highlighted = 1 THEN a.order ELSE a.id END) DESC
LIMIT 30, 10;

关于mysql - 列出多个条件的条目,分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352918/

相关文章:

mysql - 如何像这样组合 2 个 MySQL 表? (多对一关系)

javascript - 无法建立nodejs mysql连接

Mysql查询满足以下要求

mysql - 选择字段为非空的所有项目

SQL Server - 在 XML 数据类型中存储换行符

mysql - 如何在 Select 语句中使用 IF() [控制流函数] case?

php - 简单的 Ajax Jquery 脚本 - 如何获取表中每一行的信息?

sql - 从 friend 那里获取帖子(您有权查看)

Magento - 将邮政编码/邮政编码添加到 Magento 1.6.2 中的订单网格中

php/mysql 多选困境