powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
5 сообщений из 5, страница 1 из 1
Помогите с запросом
    #38561058
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть таблица: id - ключ, num - порядковый номер записи в таблице (float8), sp - специальный признак(varchar(2))

Например данные такие

1 1 А
2 2.5 B
5 2 A
6 2.5 A
7 5 B
8 4 B
9 1 C

Нужно обновить поле num у всех строк где sp равно 'В'. Но обновлять нужно в определенной последовательности, а конкретно по возрастающей поля num, т.е.
2 2.5 B
8 4 B
7 5 B

num в первой строке должен иметь значение 1, во второй 2, в третьей 3 и т.д.
т.е. должно получится так:
2 1 B
8 2 B
7 3 B

Подскажите пожалуйста как будет выглядеть такой запрос.
...
Рейтинг: 0 / 0
Помогите с запросом
    #38561083
AndreiSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Korbanz,

Код: sql
1.
2.
3.
4.
5.
6.
update t
   set num = q.row_number
  from (select id, row_number() over (order by num)
          from t
         where sp = 'B') as q
 where t.id = q.id
...
Рейтинг: 0 / 0
Помогите с запросом
    #38561112
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreiSQL,

спасибо большое, но у меня postgresql 8.3
row_number() там вроде нет
...
Рейтинг: 0 / 0
Помогите с запросом
    #38561198
AndreiSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Korbanz, тогда можно вот так написать, конечно не оптимально, но работать будет )

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
update t
   set num = q.row_number
  from (select id, 
               (select count(*)
                  from t as t2
                 where t2.sp = t.sp and t2.num <= t.num) as row_number
          from t
         where sp = 'B') as q
 where t.id = q.id


а вообще, крайне настоятельно рекомендую вам обновиться хотя бы до 8.4 (лучше конечно до 9.3 ;) )
т.к. 8.3 уже не поддерживается и даже если в ней найдут критическую уязвимость, никто не будет этим заниматься
...
Рейтинг: 0 / 0
Помогите с запросом
    #38561281
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreiSQL,

Благодарю за помощь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]