mysql中order by 后面的字段被加上- 负号是什么意思

你见过ORDER BY -title DESC这种用法吗?

在查看网站SQL语句时,发现这样一样语句,ORDER BY -title DESC。
第一反应是不是写错了那个-号是什么意思?

检测了下,两者结果是不一样的。

假定title字段有下面几个值:旅游1线,20路,112路,113路

title ASC得出的结果是 112路,113路,20路,旅游1线
-title DESC,是 旅游1线,20路,112路,113路
-title ASC,是 113路,112路,20路,旅游1线
title DESC,是 旅游1线,20路,113路,112路

其中-title DESC,是 旅游1线,20路,112路,113路,20路在112路前面。

那么为什么会这样呢?我们用下面这条语句来检测
SELECT title,-title FROM hx_bus WHERE ...
查看到:
title -title
112路 -112
113路 -113
20路 -20
旅游1线 -0

原来加了-(负号)后,中文的title转变成数字了,无法转变的就变成了0。
这样ORDER BY -title DESC时,按照数字排序,20路才能排在112路前面,同时112路在113路前。

所以,在某些情况下,还是需要用到ORDER BY -title DESC这种用法的。