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

Pembaruan postgres dari kiri bergabung

Berikut adalah cara umum untuk mengubah kueri pembaruan ini dari bentuk SQL-server ke PostgreSQL:

UPDATE Users
 SET bUsrActive = false
WHERE
 ctid IN (
   SELECT u.ctid FROM Users u
      LEFT JOIN Users u2 ON u.sUsrClientCode = u2.sUsrClientCode AND u2.bUsrAdmin = 1 AND u2.bUsrActive = 1
    WHERE u.bUsrAdmin = 0 AND u.bUsrActive = 1 AND u2.nkUsr IS NULL
)

ctid adalah kolom semu yang menunjuk ke lokasi unik dari sebuah baris. Anda dapat menggunakan kunci utama tabel sebagai gantinya jika ada.

Kueri #2 dari pertanyaan tidak melakukan apa yang Anda harapkan karena tabel yang diperbarui Users tidak pernah bergabung ke tabel yang sama Users u dalam klausa FROM. Sama seperti ketika Anda memasukkan nama tabel dua kali dalam klausa FROM, mereka tidak digabungkan atau diikat secara implisit, mereka dianggap sebagai dua set baris independen.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada klien PostgreSQL yang bagus untuk linux?

  2. Postgresql :Menggabungkan 2 database serupa

  3. SQL:Mengontrol berapa banyak catatan yang dikembalikan

  4. Optimalkan agregat lambat di LATERAL join

  5. Perbedaan antara mengakhiri dan membatalkan proses