Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql:задайте променлива със списък

Променливите в MySQL изискват една проста стойност, обикновено низ, число или булева стойност. Това, което бихте могли да направите в този случай, е да насочите идентификаторите си за продажби през GROUP_CONCAT() , който ще върне разделен със запетая списък с всички идентификатори на продажби (с някои ограничения - може да се наложи да коригирате някои конфигурационни настройки, ако имате много идентификатори на продажби и изобщо не можете да ги филтрирате), и след това направете 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате MySQL база данни в UTF-8 кодиране

  2. Как да настроите правилната часова зона на MySQL JDBC в конфигурацията на Spring Boot

  3. Ефективна обработка на голямо количество данни с MySQL и PHP

  4. Как да надстроите MySQL на CentOS

  5. неинициализирана константа MysqlCompat::MysqlRes (с помощта на mms2r gem)