Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySql:đặt một biến với một danh sách

Các biến trong MySQL yêu cầu một giá trị đơn giản, thường là một chuỗi, số hoặc boolean. Những gì bạn có thể làm, trong trường hợp này, là định tuyến các ID bán hàng của mình thông qua GROUP_CONCAT() , sẽ trả về danh sách được phân tách bằng dấu phẩy gồm tất cả các ID bán hàng (với một số hạn chế - bạn có thể cần điều chỉnh một số cài đặt cấu hình nếu bạn có nhiều ID bán hàng và không thể lọc chúng), sau đó thực hiện FIND_IN_SET() , kiểm tra một giá trị trong danh sách được phân tách bằng dấu phẩy. Một cái gì đó như thế này sẽ hoạt động cho các bộ nhỏ:

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;

Bạn cũng có thể bỏ qua hoàn toàn việc tạo biến thông qua một phép nối, điều này sẽ nhanh hơn và sẽ vượt qua giới hạn độ dài trên 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. Loại trừ các giá trị nhất định khi chia giá trị cố định cho các quốc gia dựa trên chia sẻ doanh thu hàng ngày

  2. thêm 1 ngày vào giá trị định dạng DATETIME

  3. MySQL ISNULL () Giải thích

  4. Nhóm theo tháng và năm trong MySQL

  5. java.sql.SQLException:Không có cơ sở dữ liệu nào được chọn - tại sao?