2013-03-13 3 views
-2

У меня проблема в order by desc. Например, я хочу заказать по desc значения id, который равен 1-10. а вот пример кодаЗаказ по desc - issue

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 

помощь, пожалуйста, спасибо!

+6

что тип данных на 'stu_id'? – Taryn

ответ

0

Похоже, что ваш тип столбца не является числовым, а строкой.

+1

Возможно, вам захочется объяснить, как они исправляют проблему. – Taryn

+0

У меня недостаточно информации для этого. Столбец должен быть числовым - тогда измените его тип, иначе он должен будет бросить во многих местах. Это исключение - тогда будет действовать актерский состав. – uselpa

+0

@bluefeet Что такое политика SO по этому поводу? В один прекрасный день я получаю предложение за то, что вы дали полное решение (a.k.a. «не ложь-кормить»), а затем я опускаюсь вниз, потому что я этого не делаю. – uselpa

8

Причина в том, что колонка представляет собой строку. Правильно?

Попробуйте литье его в целое,

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

или без литья, изменить тип данных столбца INT, так что вы можете непосредственно сортировать записи без приводился к другому типу данных,

SELECT * FROM tableName ORDER BY colName DESC 
+1

спасибо! вы правы, столбец является строкой (varchar). Большое вам спасибо, это очень помогает мне! –

+0

приветствую вас: D' рад, что это помогло. –

+0

не забудьте принять ответ, если он вам поможет: ' –

3

Я предполагаю, что эти значения не являются int, но varchar. Поэтому вы должны изменить тип на int. Как долго вы можете использовать CAST:

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

Here демо с неправильным (по алфавиту) + правильный (числовой) порядке.

+0

Спасибо за ответ :) –

1

попробовать

order by convert(int,id) desc 

Это должно сделать это

+0

Спасибо за ответ :) –

Смежные вопросы