Saya punya dua meja, keduanya tampak seperti
id name value
===================
1 Joe 22
2 Derk 30
Saya perlu menyalin nilai value
dari tableA
ke tableB
berdasarkan nama cek di setiap tabel.
Ada tips untuk UPDATE
pernyataan ini ?
mysql
sql
sql-update
LeoSam
sumber
sumber
INNER JOIN
sempurna dalam situasi ini. Saya juga biasaCONCAT_WS
menggabungkan nama pruduct dan SKU dari tabel lainUPDATE participants_registrations INNER JOIN participants ON participants.id = participants_registrations.participantId INNER JOIN registrations ON registrations.id = participants_registrations.registrationId LEFT JOIN groups ON (groups.id = registrations.groupId) SET registrations.groupId = groups.id, registrations.groupName = groups.name, participants.memberOfGroupName = groups.name
Anda harus bergabung dengan dua tabel:
misalnya Anda ingin menyalin nilai
name
dari tableA ketableB
tempat mereka memiliki nilai yang samaID
PEMBARUAN 1
PEMBARUAN 2
sumber
where
klausa atau memodifikasiwhere
klausa tergantung pada kebutuhan Anda ..Kemungkinan kedua adalah,
sumber
.name
diindeks pada kedua tabel?Opsi kedua juga layak jika Anda menggunakan mode pembaruan aman (dan Anda mendapatkan kesalahan yang menunjukkan bahwa Anda telah mencoba memperbarui tabel tanpa WHERE yang menggunakan kolom KUNCI), dengan menambahkan:
sumber
sumber
Simpan data Anda di tabel temp
Sekarang perbarui kolom
sumber
Dalam kasus saya, solusi yang diterima terlalu lambat. Untuk tabel dengan baris 180K, laju pembaruan adalah sekitar 10 baris per detik. Ini dengan indeks pada elemen gabungan.
Saya akhirnya menyelesaikan masalah saya menggunakan prosedur:
Saya berharap ini akan membantu seseorang di masa depan seperti itu membantu saya
sumber
Jika Anda memiliki bidang yang sama di kedua tabel maka itu sangat mudah! ....
Tabel-1 = tabel tempat Anda ingin memperbarui. Tabel-2 = tabel tempat Anda mengambil data.
sumber