Proměnné v MySQL vyžadují jedinou jednoduchou hodnotu, obvykle řetězec, číslo nebo booleovskou hodnotu. Co byste v tomto případě mohli udělat, je směrovat svá prodejní ID přes GROUP_CONCAT()
, který vrátí seznam všech prodejních ID oddělených čárkami (s určitými omezeními – možná budete muset upravit některá nastavení konfigurace, pokud máte mnoho prodejních ID a nemůžete je vůbec filtrovat), a poté provede FIND_IN_SET()
, který kontroluje hodnotu v seznamu odděleném čárkami. Něco takového by fungovalo pro malé sady:
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;
Vytváření proměnné byste také mohli zcela obejít spojením, což by bylo rychlejší a obešlo by to omezení délky u 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;