Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить из массива элементы 
:(
    Опции темы
polin11
Дата 16.9.2022, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Использую СУБД Postgresql.
Есть таблица вида:

Код

CREATE TABLE docs (
   id int PRIMARY KEY,
   account bigint,
   contact TEXT []
);
INSERT INTO docs VALUES(1, 22, ARRAY ['Иван', 'Петр']);
INSERT INTO docs VALUES(2, 22, ARRAY ['Иван']);
INSERT INTO docs VALUES(3, 22, ARRAY['Иван', 'Виктор']);
INSERT INTO docs values(4, 22, ARRAY['Иван', 'Роман', 'Сергей']);


https://www.db-fiddle.com/f/p4... ck3ws8tJ/0

Есть массив строк контактов(например ['Иван','Петр']) и аккаунт, нужно из поля contact удалить
этих пользователей. Если после этого массив пустой, то нужно удалить запись целиком.
Например из набора:
Код

1, 22, ARRAY ['Иван','Петр']
2, 22, ARRAY ['Иван']
3, 22, ARRAY['Иван', 'Виктор']
4, 22, ARRAY['Иван', 'Роман', 'Сергей']


После обновления таблица должна иметь вида:
Код

3, 22, ARRAY['Виктор']
4, 22, ARRAY['Роман', 'Сергей']

Просьба помочь это сделать одним запросом
PM MAIL   Вверх
Akina
Дата 16.9.2022, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20535
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Удаление и обновление одним запросом? что-то сомнительно...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
polin11
Дата 16.9.2022, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Почему не одним запросом, например update или delete обернуть в cte?
PM MAIL   Вверх
Akina
Дата 17.9.2022, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20535
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(polin11 @  16.9.2022,  15:21 Найти цитируемый пост)
Почему не одним запросом, например update или delete обернуть в cte?

Потому что обернув действие в CTE, ты "разведёшь" и фактически материализуешь исходное и промежуточное состояния. И какое из них будет редактироваться дальше? Исходное? тогда первое изменение потеряется... промежуточное? но к нему не получится обратиться, оно не существует физически.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1477 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.