我正在使用带有许多旧记录的TYPO3 4.5。我已经清除了tt_conten等等。现在我遇到了问题,我必须删除一些没有相应父页记录的页面记录。
DELETE from pages where pid not in (SELECT uid FROM pages)
我收到错误
You can't specify target table 'pages' for update in FROM clause
是否有任何解决方法只能在一个声明中删除记录?
答案 0 :(得分:1)
在运行以下某个语句之前,请务必创建 TYPO3数据库的备份。
为了删除pages
表中没有uid的所有页面,您可以使用以下语句。
DELETE FROM pages WHERE pid NOT IN (SELECT * FROM (SELECT uid FROM pages) AS X) ;
这会增强您原来的陈述,但是您有些遗漏,所以不要使用它!
上述声明删除了表格pages
中没有任何对应的所有网页 - 这包括所有网页您的Pagetree的最高级别(其中pid = 0),因此您的pagetree将为空且无法使用。
要排除顶级页面,请使用以下语句。
DELETE FROM pages WHERE pid NOT IN (SELECT * FROM (SELECT uid FROM pages) AS X) AND pid > 0;
希望这有帮助。