Удалите mysql и присоединитесь где

0

Следующий запрос в моем sql throws "Вы не можете указать целевую таблицу" 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'));

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

Теги:
join
sql-delete

1 ответ

1

Если вы делаете 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'));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню