sql >> Base de Datos >  >> RDS >> Mysql

MySql:establecer una variable con una lista

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;