Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tabel ditentukan dua kali dalam Prosedur, bagaimana cara memperbaikinya?

Saya pikir Anda menginginkan subkueri yang berkorelasi:

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 
             );

Saya mengubah/memperbaiki banyak hal lain:

  • Alias ​​tabel membuat kueri lebih mudah ditulis dan dibaca.
  • Backtick membuat kueri lebih sulit untuk ditulis dan dibaca.
  • Kondisi hanya pada tabel yang diperbarui harus di luar WHERE , bukan bagian dalam WHERE .
  • Menyetel variabel dalam EXISTS subquery tidak masuk akal. EXISTS menguji apakah baris ada. Logikanya, itu bisa dijalankan tanpa pernah mengevaluasi 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. Java Spring JPA Pagination Tidak berfungsi jika lebih dari satu Halaman

  2. Hapus baris duplikat dalam tabel yang tidak memiliki kunci utama

  3. tidak dapat menjatuhkan kunci asing

  4. Cara Mendapatkan Pengguna Baru Per Hari di MySQL

  5. Cara memilih beberapa baris dari mysql dengan satu kueri dan menggunakannya di php