Следующий запрос в моем 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'));
Может кто-нибудь помочь мне переписать запрос?
Если вы делаете 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'));