Порядок и группа в SQL - PullRequest
0 голосов
/ 24 мая 2018

У меня есть база данных:

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

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Группировка на вашем столе вообще не имеет смысла.Заказ по будет просто отлично.

select Serialno,Name
from table _name
order by Name desc
0 голосов
/ 25 мая 2018

Невозможно сделать то, что вы хотите с SQL.

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

Таблица в SQL - это неупорядоченный набор строк, и любой порядок должен быть наложен предложением ORDER BY.Поэтому, если ваш порядок не может быть выражен в SQL и не зависит от физического размещения строк в таблице, ваша проблема не может быть решена.

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

0 голосов
/ 24 мая 2018

Это данные из таблицы:

SELECT * FROM #temp

enter image description here

Select *
from tablename
Order by Serial no DESC, Name;

Это вывод, который я получил для следующего запроса:

enter image description here

...