Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
Приветствую, такой экспресс-вопрос, как после группировки записей удалить(изменить) все записи в каждой группе, кроме первой(для простоты возьмём условие - кроме записи с наименьшим ид в группе). Скажем есть запрос: Код: sql 1. 2. 3. 4. В целом задача состоит в получении дублей записей справочника и их удалении. В данном случае я с помощью группировки получил все дубли, теперь я знаю сколько их, а как теперь из каждой такой группы удалить(или например изменить) все записи кроме, скажем, первой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2021, 11:12 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
На вскидку, использовать оконную функцию rank(). А потом удалить записи у которых rank > 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2021, 11:20 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
Guzya На вскидку, использовать оконную функцию rank(). А потом удалить записи у которых rank > 1 Спасибо, правда rank не подошёл, тут лучше подошло row_number(). В этом случае он нумерует строки в группах и становится возможным обработать их по своему условию. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Здесь теперь можно удалить все строки, где row_number > 1. Удивило, что нельзя использовать rn в условии в том же запросе, нужно делать внешний над этой выборкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2021, 12:56 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
I dont know Приветствую, такой экспресс-вопрос, как после группировки записей удалить(изменить) все записи в каждой группе, кроме первой(для простоты возьмём условие - кроме записи с наименьшим ид в группе). Скажем есть запрос: Код: sql 1. 2. 3. 4. В целом задача состоит в получении дублей записей справочника и их удалении. В данном случае я с помощью группировки получил все дубли, теперь я знаю сколько их, а как теперь из каждой такой группы удалить(или например изменить) все записи кроме, скажем, первой. Ну например (проверить предварительно): Код: sql 1. 2. 3. 4. 5. 6. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2021, 12:59 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Точно, можно же ещё одну агрегирующую ф-ию использовать, не подумал сразу, спасибо за идею ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2021, 13:29 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
I dont know, При удалении можно ещё ориентироваться на тех. столбец ctid при необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2021, 07:33 |
|
||
|
Экспресс-вопрос: как удалить все записи кроме одной в каждой группе после группировки
|
|||
|---|---|---|---|
|
#18+
Совсем необязательно использовать группировку Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Если для каких-то колонок допустим Null, то для них в условия сравнения надо ещё coalesce добавить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2021, 16:13 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=40094364&tid=1993878]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 401ms |

| 0 / 0 |
