我在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
帮助,谢谢!
答案 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)
看起来您的列类型不是数字,而是字符串。