PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres dołącza lub ustawia każdy element (jeśli nie istnieje) tablicy do kolumny tablicy

Zakładam, że arr_str jest typu text[] (chociaż nie użyłeś dla nich odpowiedniego formatu, więc mogę się mylić; jeśli tak jest, będziesz musiał rzutować swoją wartość na text[] ).

Użyj poniższej instrukcji, jeśli chcesz usunąć duplikaty, które są już obecne w arr_str kolumna:

update tabl1
set    arr_str = (select array_agg(distinct e) from unnest(arr_str || '{b,c,d}') e)
where  not arr_str @> '{b,c,d}'

Lub użyj następującego, jeśli chcesz zachować istniejące duplikaty:

update tabl1
set    arr_str = arr_str || array(select unnest('{b,c,d}'::text[]) except select unnest(arr_str))
where  not arr_str @> '{b,c,d}'

Obie te instrukcje nie dotkną wierszy, na które i tak nie będzie miało wpływu (spójrz na where not arr_str @> '{b,c,d}' orzec). Jest to zwykle najlepsza praktyka i prawie zawsze jest zalecana, gdy zaangażowane są wyzwalacze.

http://rextester.com/GKS7382



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize Migration:relacja <table> nie istnieje

  2. Błąd, że plik PGXS Makefile nie może zostać znaleziony podczas instalacji PostGis na Debianie

  3. Slick i bonecp:org.postgresql.util.PSQLException:FATAL:przepraszam, zbyt wiele klientów już błąd

  4. Konsola Rails znajduje użytkowników według tablicy identyfikatorów

  5. Jak uzyskać numer wiersza w PostgreSQL