sql >> Databáze >  >> RDS >> Mysql

MySql:nastavte proměnnou se seznamem

Proměnné v MySQL vyžadují jedinou jednoduchou hodnotu, obvykle řetězec, číslo nebo booleovskou hodnotu. Co byste v tomto případě mohli udělat, je směrovat svá prodejní ID přes GROUP_CONCAT() , který vrátí seznam všech prodejních ID oddělených čárkami (s určitými omezeními – možná budete muset upravit některá nastavení konfigurace, pokud máte mnoho prodejních ID a nemůžete je vůbec filtrovat), a poté provede FIND_IN_SET() , který kontroluje hodnotu v seznamu odděleném čárkami. Něco takového by fungovalo pro malé sady:

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;

Vytváření proměnné byste také mohli zcela obejít spojením, což by bylo rychlejší a obešlo by to omezení délky u 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;



  1. index na adrese URL nebo hash s ohledem na RAM

  2. Spouštěč MySQL pro aktualizaci pole na hodnotu id

  3. To-do list aplikace využívající PHP a MySQL databázi

  4. Vygenerujte hash řetězec MD5 pomocí T-SQL