如何从大数字到小数字对MySQL查询记录进行排序

时间:2015-06-04 11:02:24

标签: mysql

我试图将记录从大到小排序,这是我的示例记录:

id   name   view   like
1   name1    5      1
2   name2    2      4
3   name3    41     3
4   name4    6      31
5   name5    1      2

例如,我希望订单记录如下(即由名为like的字段排序):

id   name   view   like
4   name4    6      31
2   name2    2      4
3   name3    41     3
5   name5    1      2
1   name1    5      1

我尝试了这个查询...

SELECT * FROM tablename ORDER BY like DESC

...但查询结果现在是这样的:

id   name   view   like
2   name2    2      4
3   name3    41     3
4   name4    6      31
5   name5    1      2
1   name1    5      1

那么,我想要的正确查询是什么?

5 个答案:

答案 0 :(得分:3)

likereserved

中的mysql字词

你可以使用反引号逃脱它; ``

SELECT * FROM `tablename` ORDER BY `like` DESC

答案 1 :(得分:2)

如果您选择了错误的数据类型来存储整数数据,并且您可能已为此选择了varchar,则会发生这种情况。

您需要将字符串转换为数字以便订购

SELECT * FROM tablename ORDER BY `like`+0 DESC

答案 2 :(得分:2)

看起来您正在以字符串格式存储like的数值; CHARVARCHAR。这将导致您可以看到按字母顺序排列的样式(将1设为A,将2设为B等,然后将结果排序为单词)。

将列的数据类型更改为INT等数字格式,查询应按预期运行。

如果您无法更改列的数据类型,那么我建议将其投射到查询中:

SELECT * FROM tablename ORDER BY CAST(`like` AS UNSIGNED) DESC

SELECT * FROM tablename ORDER BY CAST(`like` AS SIGNED) DESC

如果like可能是否定的。

我觉得这比+0更容易阅读和控制,但Abhik打败了我:)

答案 3 :(得分:0)

您不能将保留字用作字段名称。将其更改为likes然后您可以直接触发此查询...

 SELECT * FROM tablename ORDER BY likes DESC

答案 4 :(得分:0)

like列的数据类型是什么我觉得它不是Integer如果不是那么请更改表格