Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql:ustaw zmienną z listą

Zmienne w MySQL wymagają pojedynczej, prostej wartości, zazwyczaj ciągu, liczby lub wartości logicznej. W tym przypadku możesz przekierować swoje identyfikatory sprzedaży przez GROUP_CONCAT() , który zwróci rozdzieloną przecinkami listę wszystkich identyfikatorów sprzedaży (z pewnymi ograniczeniami — może być konieczne dostosowanie niektórych ustawień konfiguracji, jeśli masz dużo identyfikatorów sprzedaży i nie możesz ich w ogóle filtrować), a następnie wykonaj FIND_IN_SET() , który sprawdza wartość na liście rozdzielanej przecinkami. Coś takiego działałoby w przypadku małych zestawów:

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;

Można również całkowicie pominąć tworzenie zmiennej poprzez łączenie, co byłoby szybsze i obejdzie ograniczenie długości w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. stały sposób wykonywania mysqli->set_charset()?

  2. Zależność cykliczna mysql w ograniczeniach kluczy obcych

  3. Widok tabeli krzyżowej w MySQL?

  4. Konwersja ciągu znaków DateTime w Pythonie na liczby całkowite w milisekundach

  5. Jak mogę sprawdzić, ile połączeń MySQL jest otwartych?