Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris dalam Pertanyaan PostgreSQL Tunggal?

Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris dalam Pertanyaan PostgreSQL Tunggal?

Linda Hamilton
Linda Hamiltonasal
2025-01-12 22:42:43552semak imbas

How Can I Update Multiple Rows in a Single PostgreSQL Query?

PostgreSQL pertanyaan tunggal mengemas kini berbilang baris

Artikel ini meneroka cara mengemas kini berbilang baris data menggunakan satu pertanyaan dalam pangkalan data PostgreSQL. Walaupun PostgreSQL tidak menyokong pengemaskinian berbilang baris secara langsung, terdapat beberapa cara untuk mencapai matlamat ini.

Satu pendekatan ialah menggunakan gabungan sintaks UPDATE ... FROM dan jadual pemetaan. Ini membolehkan berbilang lajur dikemas kini dan memberikan fleksibiliti yang lebih besar. Kod berikut menunjukkan pendekatan ini:

<code class="language-sql">UPDATE test AS t
SET column_a = c.column_a
FROM (VALUES
    ('123', 1),
    ('345', 2)
) AS c(column_b, column_a)
WHERE c.column_b = t.column_b;</code>

Lebih banyak lajur boleh ditambah mengikut keperluan:

<code class="language-sql">UPDATE test AS t
SET column_a = c.column_a,
    column_c = c.column_c
FROM (VALUES
    ('123', 1, '---'),
    ('345', 2, '+++')
) AS c(column_b, column_a, column_c)
WHERE c.column_b = t.column_b;</code>

Satu lagi pendekatan yang lebih bersih ialah menggunakan sintaks INSERT ... ON CONFLICT ... UPDATE PostgreSQL, yang menggabungkan fungsi sisipan dan kemas kini ke dalam satu pertanyaan. Walau bagaimanapun, kaedah ini memerlukan mencipta indeks unik pada lajur yang mengenal pasti baris yang akan dikemas kini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris dalam Pertanyaan PostgreSQL Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn