MySQL的使用具有和计数

问题描述:

正在试图删除删除与子查询的几个条目使用以下查询: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. 第一步:创建临时表

    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 
    ) 

首先创建视图

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

你的问题就解决了,只是做如下..

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