4

我正在尝试使用以下查询删除几个条目:

首先,我使用此查询找到要删除的条目:

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 子句中指定目标表“帐户”进行更新

4

3 回答 3

1

我认为您需要使用临时表来满足您的需求,如下所示:

  1. Step1:创建临时表

    CREATE TEMPORARY TABLE MyTemp
    SELECT guid FROM account 
    GROUP BY guid,type HAVING count(type) > 1;
    
  2. 在删除语句中使用临时表

    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
    )
于 2012-11-28T16:56:05.647 回答
0

您的问题已解决,只需按照以下操作即可..

    DELETE FROM account 

      WHERE guid IN 

     (SELECT * FROM 

       (SELECT guid FROM account 

          GROUP BY guid,type 

          HAVING  count(type) > 1) AS a);
于 2013-12-02T11:20:37.773 回答
-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);
于 2011-02-08T18:54:36.527 回答