Delete - nie mogę określić tabeli docelowej?

Dlaczego to zapytanie nie działa?

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)

Pojawia się komunikat : "nie można określić docelowej tabeli "recent_edits" dla aktualizacji w klauzuli FROM

Author: OMG Ponies, 2011-04-28

2 answers

Spróbuj w ten sposób

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);
 106
Author: Nicola Cossu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-28 10:04:44

Nie możesz przetworzyć tabeli, która jest zablokowana do usunięcia. użycie hacka select * from (query) w stanie Nicola wygeneruje tymczasową tabelę zamiast bezpośredniego dostępu.

Edit-upewnij się, że nadajesz ID tabel, których używasz, ponieważ są zagnieżdżone i będą wymagały uniqueID dla każdej tabeli.

 25
Author: Elysiumplain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 21:27:56