Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Kemas Kini Berbilang Jadual MySQL Menggunakan LEFT JOIN?

Bagaimanakah Saya Boleh Kemas Kini Berbilang Jadual MySQL Menggunakan LEFT JOIN?

Barbara Streisand
Barbara Streisandasal
2024-12-06 12:37:11820semak imbas

How Can I Update Multiple MySQL Tables Using a LEFT JOIN?

Mengemas kini Berbilang Jadual Menggunakan LEFT JOIN dalam MySQL

MySQL membolehkan pengguna melakukan kemas kini berbilang jadual menggunakan pelbagai jenis cantuman, termasuk LEFT JOIN . Walau bagaimanapun, sintaks untuk kemas kini sedemikian mungkin sukar difahami.

Sintaks untuk Mengemas kini Berbilang Jadual dengan LEFT JOIN

Untuk mengemas kini berbilang jadual menggunakan LEFT JOIN, sintaks berikut boleh bekerja:

UPDATE  t1
LEFT JOIN
        t2
ON      t2.id = t1.id
SET     t1.col1 = newvalue
WHERE   t2.id IS NULL

Dalam hal ini sintaks:

  • t1 dan t2 mewakili jadual yang sedang dikemas kini.
  • Klausa LEFT JOIN ​​menetapkan hubungan antara jadual berdasarkan keadaan (t2.id = t1.id dalam contoh ini).
  • Klausa SET menentukan lajur dan nilai baharunya untuk dikemas kini dalam jadual sasaran t1.
  • Klausa WHERE menapis baris dalam set hasil gabungan berdasarkan kriteria, dalam kes ini, ia mengenal pasti baris daripada t1 yang tidak wujud dalam t2 (t2.id IS NULL).

Pertimbangan Prestasi

Ia penting ambil perhatian bahawa kemas kini LEFT JOIN adalah kurang cekap berbanding dengan menggunakan sintaks NOT IN ​​untuk memilih data. Pendekatan yang lebih baik untuk mengenal pasti pesanan yang tidak lengkap dengan cekap, contohnya, adalah menggunakan sintaks berikut:

SELECT  t1.*
FROM    t1
WHERE   t1.id NOT IN
        (
        SELECT  id
        FROM    t2
        )

Walau bagaimanapun, untuk kenyataan UPDATE, MySQL tidak membenarkan jadual sasaran digunakan dalam subkueri. Oleh itu, sintaks LEFT JOIN yang kurang cekap mesti digunakan untuk kemas kini berbilang jadual.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Berbilang Jadual MySQL Menggunakan LEFT JOIN?. 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