2016-03-17 5 views
0

У меня есть оператор выбора, который является динамическим и имеет возможность сортировать по столбцу, а не по имени, облегчит мне жизнь.Сортировка по столбцу index not column name

Пример:

select id, name, description 
from table 
order by description 

Хотела что-то вроде:

select id, name, description 
from table 
order by colindex(2) 
+4

так .... 'ORDER BY 2'? – Lamak

+2

Я бы осторожно заказывал по порядковой позиции. Он по-прежнему работает в SQL Server, но был удален из стандартов в ANSI-99. Не говоря уже о том, что вы используете функцию ранжирования, такую ​​как ROW_NUMBER, вы не можете использовать порядковую позицию в этом порядке. –

+0

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

ответ

2

Ответ

select id, name, description 
from table 
order by 2 

Иногда это самый простой способ особенно, когда вы работаете на динамическом SQL. Но, как упоминалось в комментариях, старайтесь избегать использования индекса столбца. Я думаю, они собираются удалить его, так как это ошибка.

+0

Этот ответ должен быть принят как правильный, а затем избегать :) – n8wrl

+1

Я добавил больше формулировок. Иногда избегать этого может быть очень сложно. Во всяком случае, кто-то использует функцию, и он/она знает риск, что до него/нее. Я думаю, что это продлится как минимум на следующие 10 лет. – FLICKER

+0

Я попробовал это, и это не сработало для меня. Это совсем не сортировалось. Должен ли я указывать подсказки asc и desc с этим? – CodeMilian

-1

Если вы строите свой SQL динамически, сохраните имена столбцов в массиве. Таким образом, вы можете построить свою инструкцию order-by с порядковым индексом и испустить реальное имя столбца в инструкции.

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