簡體   English   中英

MySQL DELETE使用有和計數的子查詢

[英]MySQL DELETE With a Sub-Query using Having and Count

我試圖使用以下查詢刪除多個條目:

首先,我使用此查詢找到要刪除的條目:

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子句中為更新指定目標表'account'

我認為您需要使用臨時表來滿足您的需求,如下所示:

  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
    )

你的問題解決了,就像下面這樣做..

    DELETE FROM account 

      WHERE guid IN 

     (SELECT * FROM 

       (SELECT guid FROM account 

          GROUP BY guid,type 

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

首先創建視圖

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM