在以下情况下我需要你的帮助:
我有一个看起来像这样的表
----------------------------
| 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_INCREMENTorder
是 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/