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

tidak dapat menentukan tabel target untuk UPDATE dalam klausa FROM

bungkus dalam subquery, (sehingga membuat tabel sementara untuk hasilnya ). Saya juga merekomendasikan untuk menggunakan ANSI SQL-92 format.

update table3 d 
set    status = 'Complete'
where  d.id in 
(
    SELECT ID
    FROM
    (
        select  b.id 
        from    table1 a 
                INNER JOIN table3 b
                    ON a.id = b.table1_id
                INNER JOIN table2 c
                    ON c.id = b.table2_id
        where   c.examId = 16637 and 
                a.id in (46,47,48,49) 
    ) xx
);

atau dengan menggunakan JOIN

update  table3 d 
        INNER JOIN
        (
            SELECT ID
            FROM
            (
                select  b.id 
                from    table1 a 
                        INNER JOIN table3 b
                            ON a.id = b.table1_id
                        INNER JOIN table2 c
                            ON c.id = b.table2_id
                where   c.examId = 16637 and 
                        a.id in (46,47,48,49) 
            ) xx
        ) y ON d.id = y.id
set status = 'Complete'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pengaturan backend db untuk aplikasi dengan pengguna yang beragam secara geografis

  2. Masukkan beberapa baris ke mysql (item dipisahkan dengan koma)

  3. Mencari MySQL dengan PHP

  4. Membuat kursor dengan SQL Dinamis di MySQL

  5. Perbarui kolom tabel dengan menambahkan beberapa nilai ke nilai kolom yang sama di MySQL