MySQLの変数には、単一の単純な値、通常は文字列、数値、またはブール値が必要です。この場合、できることは、 GROUP_CONCAT()
を介して販売IDをルーティングすることです。 、これはすべての販売IDのコンマ区切りリストを返します(いくつかの制限があります-販売IDがたくさんあり、それらをまったくフィルタリングできない場合は、いくつかの構成設定を調整する必要がある場合があります)、次に<コードを実行します> FIND_IN_SET() 、コンマ区切りのリストの値をチェックします。このようなものは小さなセットで機能します:
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;
また、結合を介して変数の作成を完全にバイパスすることもできます。これにより、より高速になり、 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;