提问者:小点点

SQL sum(time)as time列不按ASC和DESC顺序排序


我一直试图排序我的SQL查询的结果,但它没有正常工作,我尝试过其他解决方案,但没有工作,参考链接

我的查询

SELECT tournament_entry.TE_club, MAX(tournament_entry.TE_pegion) As TE_pegion, 
       concat(
       floor(SUM(TIME_TO_SEC(tournament_entry.TE_flytime))/3600),':',
       floor(SUM( TIME_TO_SEC(tournament_entry.TE_flytime))/60)%60,':',
       SUM(TIME_TO_SEC(tournament_entry.TE_flytime))%60) as TE_flytime
  FROM tournament_entry  
  WHERE  tournament_entry.TE_tournament = '$Tname'  
  GROUP BY TE_club 
  ORDER BY TE_flytime DESC

点1,我已经使用CONCAT(),原因显示时间总和大于838:59:59的参考链接

接着执行步骤1,

ORDER BY TE_flytime ASC

结果,这是不正确的

接着是第2步,

ORDER BY TE_flytime DESC

结果,不正确,在这种方式下它采取大于1000的结果到底部(最后),也许如果有任何逻辑或方式使用和它将排序适当。

接着是第3步,

ORDER BY 'cast(TE_flytime as float) time'

结果,不正确,把所有结果都搞混了。 参考链接

注意:我想以这样一种方式对它进行排序,它在顶部显示最大的结果,依此类推

例如

1034:46:0
1027:4:0
965:37:0
809:11:0

共1个答案

匿名用户

计算列TE_FlyTime是一个字符串,因此如果按该列排序,将按字母顺序排序。
您可以按总秒数排序:

ORDER BY SUM(TIME_TO_SEC(tournament_entry.TE_flytime)) DESC