Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用具有多列的group by删除_Mysql_Group By_Sql Delete - Fatal编程技术网

Mysql 使用具有多列的group by删除

Mysql 使用具有多列的group by删除,mysql,group-by,sql-delete,Mysql,Group By,Sql Delete,我想删除此查询返回的所有行 按col1、col2、col3的count*>1从myTable组中选择col1、col2、col3; 我尝试了这个,但它给了我一个语法错误 从myTable中删除col1、col2、col3 从中选择col1、col2、col3 从myTable中选择col1、col2、col3 按计数*>1的col1、col2、col3分组 T 使用表的内部联接 DELETE t1 FROM myTable t1 INNER JOIN (

我想删除此查询返回的所有行

按col1、col2、col3的count*>1从myTable组中选择col1、col2、col3; 我尝试了这个,但它给了我一个语法错误

从myTable中删除col1、col2、col3 从中选择col1、col2、col3 从myTable中选择col1、col2、col3 按计数*>1的col1、col2、col3分组 T
使用表的内部联接

DELETE t1 FROM myTable t1
        INNER JOIN ( 
                       SELECT col1, col2, col3 FROM   ( 
                              SELECT   col1, col2, col3 FROM myTable 
                              GROUP BY col1, col2, col3 HAVING count(*) > 1 ) 
                            t )
    t2 ON t2.rcol1 = t1.rcol1 AND t2.col2 = t1.col AND t2.col3 = t1.col3;

但是您应该在测试数据库上测试它,因为我认为您的select不会标识正确的行,最好是有一个唯一的列来标识正确的行,因为这将删除所有行,使用表的内部联接

DELETE t1 FROM myTable t1
        INNER JOIN ( 
                       SELECT col1, col2, col3 FROM   ( 
                              SELECT   col1, col2, col3 FROM myTable 
                              GROUP BY col1, col2, col3 HAVING count(*) > 1 ) 
                            t )
    t2 ON t2.rcol1 = t1.rcol1 AND t2.col2 = t1.col AND t2.col3 = t1.col3;

但是您应该在测试数据库上测试它,因为我认为您的选择不会标识正确的行,最好是有一个唯一的列,它将标识正确的行,因为这将删除所有行,使用“选择作为子查询”连接到将从中删除行的表副本。错误消息和查询文本不匹配。不要使用“中的位置”,使用“选择作为子查询”连接到将从中删除行的表副本。错误消息和查询文本不匹配。我正在检查重复的行。假设有32个重复项,因此总共有64行。此查询将删除所有64个。如何仅删除32行?谢谢。您需要添加一个行号,并且只删除大于1的行号,您仍然需要一个unque标识符,或者您必须将行号也添加到源表中。我正在检查重复的行。假设有32个重复项,因此总共有64行。此查询将删除所有64个。如何仅删除32行?谢谢。您需要添加一个行号,并且只删除大于1的行号,您仍然需要一个unque标识符,或者您必须将行号也添加到源表中