2015-02-24 74 views
0

我真的纏在軸上。
我想從表中刪除一些記錄。
這不工作...mysql根據select語句從同一個表中刪除

delete from table where id in (select id from table where ... 

...因爲我得到了可怕的......

ERROR 1093 (HY000) at line 1: You can't specify target table for update in FROM clause 

...所以我去臨時表選項...

create temporary table idTemp (idt bigint(20) unsigned); insert into idTemp select id from table where [...]; delete from table where id in (select idt from idTemp); drop table idTemp; 

......它只在以root身份運行時才起作用。如果我以所需的用戶身份運行,無論授予用戶多少特權,我都會獲得ACCESS DENIED。
我試着添加CREATE,DROP,INSERT,DELETE,SELECT並仍然獲得ACCESS DENIED。
但是當我嘗試給用戶創建臨時表的訪問,我得到...

ERROR 1144 (42000): Illegal GRANT/REVOKE command 

我的MySQL版本5.5.14 Linux上運行。
任何幫助將不勝感激!

回答

0

您還可以詞組原始查詢作爲join

delete t 
    from table t join 
     (select id from table where ... 
     ) todelete 
     on t.id = todelete.id; 
0

的mysql>

GRANT ALL ON *.* TO 'someuser'@'somehost'; 
 
GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';