Las variables en MySQL requieren un valor único y simple, generalmente una cadena, un número o un valor booleano. Lo que podría hacer, en este caso, es enrutar sus ID de ventas a través de GROUP_CONCAT()
, que devolverá una lista separada por comas de todos los ID de ventas (con algunas limitaciones; es posible que deba ajustar algunas configuraciones si tiene muchos ID de ventas y no puede filtrarlos en absoluto), y luego haga un FIND_IN_SET()
, que busca un valor en una lista separada por comas. Algo como esto funcionaría para conjuntos pequeños:
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;
También puede omitir la creación de variables por completo a través de una combinación, lo que sería más rápido y sortearía la limitación de longitud en 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;