微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用多列分组方式删除

如何解决使用多列分组方式删除

我要删除查询返回的所有行。

SELECT col1,col2,col3 FROM myTable GROUP BY col1,col3 HAVING count(*) > 1;

我尝试了这个,但是它给了我一个语法错误

DELETE FROM myTable WHERE col1,col3 IN ( 
                       SELECT col1,col3 FROM   ( 
                              SELECT   col1,col3 FROM myTable 
                              GROUP BY col1,col3 HAVING count(*) > 1 ) 
                            t );

解决方法

在表格中使用INNER JOIN

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

但是您应该在测试数据库上进行测试,因为我认为您的选择不能标识正确的行,最好是有一个UNIQUE列,它可以标识正确的行,因为这会删除所有行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。