Variabler i MySQL kræver en enkelt, simpel værdi, generelt en streng, tal eller boolean. Hvad du kan gøre i dette tilfælde er at rute dine salgs-id'er gennem GROUP_CONCAT()
, som returnerer en kommasepareret liste over alle salgs-id'er (med nogle begrænsninger - du skal muligvis justere nogle konfigurationsindstillinger, hvis du har mange salgs-id'er og slet ikke kan filtrere dem), og lav derefter en FIND_IN_SET()
, som kontrollerer for en værdi i en kommasepareret liste. Noget som dette ville fungere for små sæt:
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;
Du kan også omgå variabeloprettelsen helt gennem en joinforbindelse, hvilket ville være hurtigere, og ville komme uden om længdebegrænsningen på 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;