最代码广告位
190679152@qq.com的gravatar头像
190679152@qq.com2016-02-16 12:04:04

mysql如何查询表数据并且对3个字段降序的SQL?

 三字段 :coin ,score update_time  

  我这样写的 select  * from   user_score order by score DESC ,coin DESC ,update_time DESC  ; 只能对score 第一个有效,后面2个排序无效。急!

所有回答列表(10)
190679152@qq.com的gravatar头像
190679152@qq.com2016年2月16日

mysql数据库

表名 :user_score ;

字段 : id  int  , score int ,coin int ,update_time varchar  ;

表数据:

INSERT INTO `user_score` VALUES (0000000017, 100, 89, '1437738261191');
INSERT INTO `user_score` VALUES (0000000018, 20, 30, '1437961725882');
INSERT INTO `user_score` VALUES (0000000019,  5723, 53, '1452652621530');
INSERT INTO `user_score` VALUES (0000000021,  7111, 35, '1453976176633');
INSERT INTO `user_score` VALUES (0000000022,  65, 1, '1447295660532');
INSERT INTO `user_score` VALUES (0000000023,  199, 1, '1441613699660');
INSERT INTO `user_score` VALUES (0000000024,  24, 0, '1439179081673');
INSERT INTO `user_score` VALUES (0000000025, 66, 0, '1442807009072');
INSERT INTO `user_score` VALUES (0000000026, 133, 3, '1446120179564');
INSERT INTO `user_score` VALUES (0000000027,  100, 0, '1441079048409');
INSERT INTO `user_score` VALUES (0000000028,  65, 1, '1446177183621');
INSERT INTO `user_score` VALUES (0000000029,  190, 1212, '1454055221112');
INSERT INTO `user_score` VALUES (0000000030,  172, 0, '1446103021823');
INSERT INTO `user_score` VALUES (0000000031,  29, 0, '1442839235313');
INSERT INTO `user_score` VALUES (0000000032,  39, 0, '1443162888171');
INSERT INTO `user_score` VALUES (0000000033,  22, 0, '1444356835955');
INSERT INTO `user_score` VALUES (0000000034,  100, 0, '1445336557725');
INSERT INTO `user_score` VALUES (0000000035, 45, 0, '1445568585133');
INSERT INTO `user_score` VALUES (0000000036,  100, 14, '1445935455916');
INSERT INTO `user_score` VALUES (0000000037,  43, 15, '1446106921553');
INSERT INTO `user_score` VALUES (0000000038,  28, 0, '1446113066656');
INSERT INTO `user_score` VALUES (0000000039,  2, 0, '1446115722572');
INSERT INTO `user_score` VALUES (0000000040, 100, 0, '1446118034728');
INSERT INTO `user_score` VALUES (0000000041,  24, 0, '1446177104504');
INSERT INTO `user_score` VALUES (0000000042,  104, 0, '1446177414486');
INSERT INTO `user_score` VALUES (0000000043,  138, 0, '1447234557689');
INSERT INTO `user_score` VALUES (0000000044,  100, 0, '1447298300206');
INSERT INTO `user_score` VALUES (0000000045,  120, 123, '1454379447142');
INSERT INTO `user_score` VALUES (0000000046,  100, 12, '1450924571406');
INSERT INTO `user_score` VALUES (0000000047,  22, 20, '1451457257103');
INSERT INTO `user_score` VALUES (0000000048,  131, 19926, '1454055221252');
INSERT INTO `user_score` VALUES (0000000049,  168, 10000120, '1454377956737');
INSERT INTO `user_score` VALUES (0000000050,  100, 0, '1453111040314');
INSERT INTO `user_score` VALUES (0000000051,  0, 10, '1453196768042');
INSERT INTO `user_score` VALUES (0000000052, 0, 10, '1453197037417');
INSERT INTO `user_score` VALUES (0000000054,  30, 78, '1453292926961');
INSERT INTO `user_score` VALUES (0000000055,  63, 83, '1453457781199');
INSERT INTO `user_score` VALUES (0000000056,  0, 4, '1453295252117');
INSERT INTO `user_score` VALUES (0000000057,  75, 68, '1453457781016');
INSERT INTO `user_score` VALUES (0000000058,  0, 1, '1453293223473');
INSERT INTO `user_score` VALUES (0000000059,  0, 1, '1453295358323');
INSERT INTO `user_score` VALUES (0000000060, 100, 0, '1454297859318');

评论(1)最佳答案
1287618656的gravatar头像
12876186562016年2月16日

你要三个同时起作用??

alexzzhong的gravatar头像
alexzzhong2016年2月16日

试一下, select * from(select * from (select  * from   user_score order by score DESC )order by coin DESC ) order by update_time DESC

haiy01的gravatar头像
haiy012016年2月16日

先分组在排序:select  * from   user_score group by score,coin  order by score DESC ,coin DESC ,update_time DESC ;

上山小麦的gravatar头像
上山小麦2016年2月19日

用楼主的数据和查询语句,在我这边是可行的

clouds8的gravatar头像
clouds82016年2月21日

曾经做过类似的效果,不过我是在前端做,mysql直接把数据取出来不排序,然后放到前端用Angular来排序。Angular支持多重排序的。有兴趣可以看看 http://peinlai.cn/post/angularjs-bei-wang-lu

zdmzs的gravatar头像
zdmzs2016年2月22日

为什么我的可以有效果

酷爱熊猫人的gravatar头像
酷爱熊猫人2016年2月26日

是起作用的,写三个会按照顺序的优先级来排序。

cghawk的gravatar头像
cghawk2016年3月6日

都有效,只不过有优先级,按照顺序排优先级。根据你的代码:score DESC ,coin DESC ,update_time DESC 最先排score,然后排coin,最后排update_time。也就是说sore按倒序排好以后,如果score中有相同的,他们的顺序就是按照coin来倒序排列。以此类推来排update_time。

sunshine9的gravatar头像
sunshine92016年5月18日

先从数据库中取出来,在对各个属性进行排序不行么

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友