sql >> Database >  >> RDS >> Mysql

kan de doeltabel voor UPDATE niet specificeren in de FROM-component

wikkel het in een subquery, (dus creëer een tijdelijke tabel voor het resultaat ). Ik raad ook aan om ANSI SQL-92 te gebruiken formaat.

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

of door JOIN . te gebruiken

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. volgorde van uitvoering in webomgeving

  2. Controleer hoe oud een Oracle-database is?

  3. MySQL-fout 1241:operand moet 1 kolom(men) bevatten

  4. Query om te converteren van datetime naar date mysql