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

Bảng quy định hai lần trong Thủ tục, làm thế nào để sửa chữa?

Tôi nghĩ bạn muốn một truy vấn con tương quan:

UPDATE ordersperformers op
    SET op.Status = 1    
WHERE op.Status = 0 AND
      op.Orders_Id = @v_order_id AND
      op.Users_Id = @v_user_id AND
      EXISTS (SELECT  1
              FROM orders o
              WHERE o.id = op.Orders_Id AND
                    NOW() <= DATE_SUB(o.DeliveryDate, INTERVAL 2 HOUR) AND
                    o.Status = 0 
             );

Tôi đã thay đổi / sửa một số thứ khác:

  • Bí danh của bảng giúp truy vấn dễ viết và dễ đọc hơn.
  • Dấu gạch chéo khiến truy vấn khó viết và khó đọc hơn.
  • Các điều kiện chỉ trên bảng đang được cập nhật phải nằm trong WHERE bên ngoài , không phải WHERE bên trong .
  • Đặt các biến trong EXISTS truy vấn con đơn giản là không có ý nghĩa. EXISTS kiểm tra xem hàng hiện hữu. Về mặt logic, nó có thể thực thi mà không cần đánh giá SELECT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể giảm một biến trong MySQL không?

  2. Cách quản lý Rails database.yml

  3. Cách chèn mảng json vào cơ sở dữ liệu mysql

  4. Docker MySQL - không thể kết nối từ ứng dụng Spring Boot với cơ sở dữ liệu MySQL

  5. lỗi wierd khi đọc từ tệp csv và nhập dữ liệu vào mysql bằng php