我需要一个SQL查询,它返回名称以A开头的所有行,并按日期排序。然后返回名称以B开头的所有行,并按日期等顺序排序。此外,粘性项目需要位于结果之上。我需要它作为一个SQL查询,因为分页。可以这样做吗?如果是这样,怎么样?
我真的付出了一些努力,但无法接近解决方案。不幸的是,我没有使用SQL作为起点。
数据库
id | name | date | sticky
1 | aa | 12-16-2017 | 0
2 | ab | 12-14-2017 | 0
3 | ac | 12-15-2017 | 0
4 | ba | 12-16-2017 | 0
5 | bb | 12-14-2017 | 0
6 | bc | 12-15-2017 | 1
结果
1 bc (sticky)
2 ab (start a order by date)
3 ac
4 aa
5 bb (start b order by date)
6 ba
答案 0 :(得分:0)
你只需要按比特(降序),名字的第一个字母然后是日期排序:
SELECT *
FROM `mytable`
ORDER BY `sticky` DESC, LEFT(`name`, 1), `date`