PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pembaruan massal di postgreSQL menggunakan unnest

Anda memanggil unnest 3 kali di FROM klausa, itu berarti Anda melakukan CROSS JOIN (produk kartesius) dari 3.

Jika Anda menggunakan PostgreSQL 9.4 atau lebih tinggi, Anda dapat dengan mudah melakukan satu panggilan unnest memberikan setiap array sebagai input:

select * from 
         unnest(
            array['2001622', '2001624', '2007903'],
             array[15,14,8],
             array['type1', 'type1', 'type1'],
             array[false, true, true]
        ) as u(id, ver, type, enabled)

Opsi lain, untuk versi apa pun, adalah menambahkan panggilan ke unnest di SELECT bukannya FROM :

select
   unnest(array['2001622', '2001624', '2007903']) as id,
   unnest(array[15,14,8]) as ver,
   unnest(array['type1', 'type1', 'type1']) as type,
   unnest(array[false, true, true]) as enabled

Dalam kedua kasus, tetapi khusus pada yang terakhir, Anda harus yakin setiap array memiliki jumlah elemen yang sama persis. Jika tidak pada metode pertama, setiap baris yang hilang akan diisi sebagai NULL, tetapi yang kedua akan mengembalikan baris sebanyak KPK dari jumlah baris yang dikembalikan oleh masing-masing, apa yang mungkin tidak Anda inginkan. Contoh:

SELECT * FROM unnest(array[1,2,3,4], array['a','b','c','d','e','f']);
 unnest | unnest 
--------+--------
      1 | a
      2 | b
      3 | c
      4 | d
 [null] | e
 [null] | f
(6 rows)

SELECT unnest(array[1,2,3,4]), unnest(array['a','b','c','d','e','f']);
 unnest | unnest 
--------+--------
      1 | a
      2 | b
      3 | c
      4 | d
      1 | e
      2 | f
      3 | a
      4 | b
      1 | c
      2 | d
      3 | e
      4 | f
(12 rows)

Periksa dokumentasi di panggilan fungsi tabel untuk informasi lebih lanjut.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KESALAHAN:operator tidak ada:numerik ~* tidak diketahui

  2. UUID atau SEQUENCE untuk kunci utama?

  3. Mengurai Json postgresql

  4. java.lang.ClassNotFoundException:org.postgresql.Driver, Android

  5. Bagaimana cara membaca JSON dari Database Doobie Scala PostgreSQL dengan Circe?