求一个mysql的分页查询语句

数据库是mysql,数据表内容如下:

mysql> select * from test;
id tel num time name
1 13011115652 5 12 刘小小
2 13021115651 5 12 王大大
3 13036115653 5 12 果果
4 13046115654 5 12
5 13026115650 5 12
6 13026115655 5 12 张小
7 13026115656 1 11 关于
8 13026115657 4 21
9 13026115658 6 31
10 13026115659 3 11
11 13626125651 9 22
12 13633325651 10 32
13 13833445652 24 120 六路
14 13833445644 24 120
15 13833445621 34 120
16 13833448999 14 110
17 13833448839 14 110 高兴

17 rows in set (0.00 sec)

sql查询语句需要按照 num(通话次数)降序,name(联系人) 这二个字段排序, 同时分页每页显示5条数据。

具体排序需求:先展示name不为空的(这些name不为空的记录按照 num 降序排序),然后在展示剩下name为空的(这些name为空的记录按照 num 降序排列),每页显示5条记录 limit 这个来完成

在线等大佬解决,严重感谢!

阅读 3.1k
3 个回答

有没有大佬指点一下啊,在线等了一晚上了!!!

图片描述

SELECT * FROM (
SELECT * FROM ((SELECT * FROM `fuck` WHERE `name`!='' ORDER BY `num` DESC) AS `NOSHIT`)
UNION ALL
SELECT * FROM ((SELECT * FROM `fuck` WHERE `name`='' ORDER BY `num` DESC) AS `ONSHIT`)
) AS `SHIT` LIMIT 0,5

0是跳过多少值,用于分页。比如第二页就是5,第三页是10。

楼上 正解, 但是 我有一个疑问 为什么UNION ALL 前后多包了一层 select ,否则排序就不起作用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题