У меня есть база данных:
Serial no. Name
1 A
1 B
2 Aa
2 Z
3 D
3 A
3 C
и я хочу, чтобы результат был
Serial no. Name
2 Aa
2 Z
1 A
1 B
3 D
3 A
3 C
Я хочу, чтобы каждая группа (с тем же номером сериала) сортировалась с другими группами на основе первого имени в группах, но внутри групп порядок имени оставался неизменным.
Я пробовал делать
Select * From tablename
group by 'Serial no.'
order by 'Name'
но я получаю:
Serial no. Name
2 Aa
1 A
3 D
Невозможно выполнить то, что вы хотите с SQL.
Вы хотите, чтобы порядок в каждой группе серийных номеров был таким же, как в таблице, но в таблице нет четко определенного порядка.
Таблица в SQL - это неупорядоченный набор строк, и любой порядок должен быть наложен предложением ORDER BY
. Поэтому, если ваш заказ не может быть выражен в SQL и не зависит от физического размещения строк в таблице, ваша проблема не может быть решена.
Порядок строк в таблице может меняться и зависит от реализации. Например, реорганизация может изменить его. В PostgreSQL, например, простое обновление изменяет порядок, и вы даже не гарантированно получаете тот же порядок в двух последовательных сканированиях.
Группировка на вашем столе не имеет никакого смысла. Заказ, сделанный просто отлично.
select Serialno,Name
from table _name
order by Name desc
Это данные из таблицы:
SELECT * FROM #temp
Select *
from tablename
Order by Serial no DESC, Name;
Это результат, который я получил для следующего запроса: