列出多个标准的条目,分页

时间:2014-12-08 07:00:13

标签: 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 desc
  • 排序order ='1'的所有行
  • 以下是按highlighted desc
  • 排序id ='0'的行
  • 获取的列表应该是分页的(limit 30, 10 - 例如,每页有10个项目)

结果应为:

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

有什么想法吗? 提前感谢您的任何建议!

2 个答案:

答案 0 :(得分:1)

试试这个:

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;

答案 1 :(得分:0)

尝试以下:

    select * from 
    (
    select * from tableA where highlighted = 1 Order By order desc    
    UNION     
    select * from tableA where highlighted = 0 Order By id desc
     )alias    LIMIT 30, 10