Variabelen in MySQL vereisen een enkele, eenvoudige waarde, meestal een tekenreeks, getal of boolean. Wat u in dit geval zou kunnen doen, is uw verkoop-ID's door GROUP_CONCAT()
leiden. , die een door komma's gescheiden lijst van alle verkoop-ID's retourneert (met enkele beperkingen - u moet mogelijk enkele configuratie-instellingen aanpassen als u veel verkoop-ID's hebt en ze helemaal niet kunt filteren), en doe vervolgens een FIND_IN_SET()
, die controleert op een waarde in een door komma's gescheiden lijst. Iets als dit zou werken voor kleine sets:
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;
U kunt het maken van variabelen ook volledig omzeilen via een join, wat sneller zou zijn en de lengtebeperking op GROUP_CONCAT()
zou omzeilen. :
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;