Variabel di MySQL membutuhkan nilai tunggal yang sederhana, umumnya berupa string, angka, atau boolean. Yang dapat Anda lakukan, dalam hal ini, adalah mengarahkan ID Penjualan Anda melalui GROUP_CONCAT()
, yang akan mengembalikan daftar semua ID Penjualan yang dipisahkan koma (dengan beberapa batasan - Anda mungkin perlu menyesuaikan beberapa pengaturan konfigurasi jika Anda memiliki banyak ID Penjualan dan tidak dapat memfilternya sama sekali), lalu lakukan FIND_IN_SET()
, yang memeriksa nilai dalam daftar yang dipisahkan koma. Sesuatu seperti ini akan bekerja untuk set kecil:
SET @list = (SELECT GROUP_CONCAT(ID) FROM Sales);
UPDATE items SET aValue = X WHERE FIND_IN_SET(salesID, @list) > 0;
DELETE FROM SalesMessages WHERE FIND_IN_SET(salesId, @list) > 0;
Anda juga dapat mengabaikan pembuatan variabel sepenuhnya melalui gabungan, yang akan lebih cepat, dan akan mengatasi batasan panjang pada GROUP_CONCAT()
:
UPDATE items as i INNER JOIN Sales as s ON s.ID = i.salesID SET i.aValue = X;
DELETE sm FROM SalesMessages as sm INNER JOIN Sales as s ON s.ID = sm.salesID;