#sql #sql-server #string #sql-order-by #sql-view
#sql #sql-сервер #строка #sql-order-by #sql-просмотр
Вопрос:
У меня есть таблица в SQL server с двумя столбцами: Name и Order. Name — это varchar
столбец, содержащий имена учащихся, Order — это int
столбец, содержащий число в порядке возрастания, соответствующее столбцу Name в алфавитном порядке.
Например, ожидаемый результат должен быть таким, как показано ниже
Names - Order
ABC - 2
AAA - 1
CCC - 3
XZZ - 5
XYZ - 4
Есть ли какая-либо возможность автоматически генерировать столбец order всякий раз, когда в таблицу вставляется новое имя?
Комментарии:
1. В таблицах есть столбец , а не поля.
2. Какую СУБД вы используете?
3. Также укажите ожидаемый результат.
4. Я использую SQL DB
5. Зачем вам нужен столбец order? SQL Server позволит вам упорядочивать в алфавитном порядке по имени столбца? И если вам нужен номер строки, используйте функцию row_number . Вам не нужно ничего хранить.
Ответ №1:
Order — это столбец int, который содержит число в порядке возрастания, соответствующее столбцу Name в алфавитном порядке.
Просто используйте row_number()
. Вы не должны хранить эту производную информацию — вместо этого вы можете использовать представление:
create view myview as
select t.*, row_number() over(order by name) as rn
from mytable t
Примечание: order
является ключевым словом языка (как в order by ...
), следовательно, не является хорошим выбором для имени столбца; Я использовал rn
вместо этого.