按订单排序 - 问题

时间:2013-03-13 16:06:40

标签: sql sql-server sql-server-2008

我在order by desc遇到了问题。例如,我想通过desc命令id为1-10的值。这是示例代码

select stu_ID from student order by stu_ID desc

但是我会得到这个结果

9
8
7
6
5
4
3
2
10
1

我希望结果像这样

10
9
8
7
6
5
4
3
2
1

帮助,谢谢!

4 个答案:

答案 0 :(得分:8)

原因是列是一个字符串 。正确?

尝试将其强制转换为int,

SELECT * FROM tableName ORDER BY CAST(colName AS INT) DESC

或不进行强制转换,将列的数据类型更改为INT,这样您就可以直接对记录进行排序,而无需转换为其他数据类型,

SELECT * FROM tableName ORDER BY colName DESC

答案 1 :(得分:3)

我认为这些值不是int而是varchar。因此,您应该将类​​型更改为int。只要您可以使用CAST

SELECT stu_id
FROM dbo.student
ORDER BY CAST(stu_id AS int) DESC

Here是一个不正确(按字母顺序)+正确(数字)顺序的演示。

答案 2 :(得分:1)

order by convert(int,id) desc

应该这样做

答案 3 :(得分:0)

看起来您的列类型不是数字,而是字符串。