2011-02-08 22 views
4

正在試圖刪除刪除與子查詢的幾個條目使用以下查詢:MySQL的使用具有和計數

首先,我找到這些條目,我想用這個查詢刪除:

SELECT guid FROM account GROUP BY guid,type HAVING count(type) > 1); 

然後我這個查詢添加到DELETE語句:

DELETE FROM account WHERE guid IN (SELECT guid FROM account GROUP BY guid,type HAVING count(type) > 1); 

,但我得到這個錯誤:

您不能指定更新目標表「帳戶」 FROM子句

+1

看吧:http://stackoverflow.com/questions/45494/sql-delete-cant-指定目標表換更新功能於從子句 – galymzhan 2011-02-08 18:33:03

回答

1

我認爲你需要使用臨時表以實現您的需求如下:

  1. 第一步:創建臨時表

    CREATE TEMPORARY TABLE MyTemp 
    SELECT guid FROM account 
    GROUP BY guid,type HAVING count(type) > 1; 
    
  2. 使用臨時表中的delete語句

    DELETE FROM account 
    WHERE guid IN (SELECT guid FROM MyTemp); 
    
  3. 刪除臨時表

    DROP TEMPORARY TABLE MyTemp; 
    

編輯:我覺得與* 兩個嵌套選項卡解決萊也可以工作:

DELETE FROM account 
    WHERE guid IN 
    (SELECT guid FROM 
     (SELECT guid FROM account 
     GROUP BY guid,type HAVING count(type) > 1) as MyTemp 
    ) 
-1

首先創建視圖

create view view_acct as 
SELECT guid FROM account 
GROUP BY guid,type HAVING count(type) > 1; 

使用後視圖

DELETE FROM account WHERE guid in (select * from view_acct); 
0

你的問題就解決了,只是做如下..

DELETE FROM account 

     WHERE guid IN 

    (SELECT * FROM 

     (SELECT guid FROM account 

      GROUP BY guid,type 

      HAVING count(type) > 1) AS a); 
+0

謝謝Abhik但你不能從你選擇同一個表中刪除。 – 2016-06-02 22:26:44