Pourquoi cette requête ne fonctionne pas?
DELETE FROM recent_edits
WHERE trackid NOT IN
(SELECT DISTINCT history.trackid
FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid
GROUP BY recent_edits.trackid)
Je reçois ce message: "Vous ne pouvez pas spécifier la table cible" recent_edits "pour la mise à jour dans la clause FROM
Essayez de cette façon
DELETE FROM recent_edits
WHERE trackid NOT IN
(select * from (SELECT DISTINCT history.trackid
FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid
GROUP BY recent_edits.trackid) as t);
Vous ne pouvez pas post-traiter une table qui est verrouillée pour suppression. en utilisant le hack select * from (query)
comme les états de Nicola générera une table temporaire au lieu d'un accès direct.
Modifier - assurez-vous de donner un ID aux tables que vous utilisez car il est imbriqué et nécessitera un ID unique pour chaque table.