MySQL DELETE 与使用having和count的子查询

2023-12-29

我尝试使用以下查询删除多个条目:

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

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 FROM account 
    WHERE guid IN (SELECT guid FROM MyTemp);
    
  3. 删除临时表

    DROP TEMPORARY TABLE MyTemp;
    

EDIT:我认为可以解决 *两个嵌套表也有效:

  DELETE FROM account 
    WHERE guid IN 
     (SELECT guid FROM 
       (SELECT guid FROM account 
       GROUP BY guid,type HAVING count(type) > 1) as MyTemp
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL DELETE 与使用having和count的子查询 的相关文章

随机推荐