Удалите mysql и присоединитесь где - PullRequest
0 голосов
/ 23 мая 2018

Приведенный ниже запрос в моем sql-запросе выдает: «Вы не можете указать целевую таблицу« d »для обновления в предложении FROM»

DELETE FROM d 
using mdm_certificate_data as d  
where d.trash = 1 and d.modified_at <= DATE_SUB(NOW(), INTERVAL 30 DAY) 
AND NOT EXISTS 
    (select e.serial_number as serial_number 
        FROM mdm_certificate_data e 
        WHERE e.serial_number = d.serial_number 
        and e.serial_number IN ('12345','1234567'));

Может ли кто-нибудь помочь мне переписать запрос?

1 Ответ

0 голосов
/ 23 мая 2018

Если вы делаете UPDATE/INSERT/DELETE для таблицы, вы не можете ссылаться на эту таблицу во внутреннем запросе (однако вы можете ссылаться на поле из этой внешней таблицы ...)

Один из способов переписать это,

DELETE FROM d 
using mdm_certificate_data as d  
where d.trash = 1 and d.modified_at <= DATE_SUB(NOW(), INTERVAL 30 DAY) 
AND NOT EXISTS 
    (select temp.serial_number as serial_number 
        FROM (select e.serial_number from mdm_certificate_data) temp
            WHERE temp.serial_number = d.serial_number 
            and temp.serial_number IN ('12345','1234567'));
...