当前位置: 首页 > 知识库问答 >
问题:

使用具有多列的group by进行删除

章晗日
2023-03-14

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

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

我试过了,但是它给了我一个语法错误。

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

共有1个答案

宋宏儒
2023-03-14

对表使用内部联接

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;

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

 类似资料:
  • 我有一个数据集,如下所示:

  • 预期输出:获取组之间计数为max的结果行,如: 示例2:这个数据帧,我按分组: 对于上面的示例,我希望获取每个组中等于max的所有行,例如:

  • 我有以下代码块可以正常工作; 这给了我2个错误; 错误%1“System.Collections.ObjectModel.ObservableCollection.ObservableCollection(System.Collections.Generic.List)”的最佳重载方法匹配包含一些无效参数 错误2参数1:无法从“System.Linq.IQueryable>”转换为“System.

  • 问题内容: 我想做这样的事情: 我怎样才能做到这一点? 问题答案: 如果必须选择ID: 如果您已经知道它们(并且它们不在成千上万):

  • 问题内容: 在按“列”分组之后,如何在pandas数据框中找到列的最大值的所有行? 示例1:以下dataFrame,我将其分组: 预期的输出:获取各组之间计数最大的结果行,例如: 示例2:此数据框,我将其分组为: 对于上面的示例,我想获取每个组中等于的所有行,例如: 问题答案: 要获取原始DF的索引,你可以执行以下操作: 请注意,如果每个组有多个最大值,则将全部返回。 更新资料 在OP所要求的情况

  • 问题内容: 我有一组数据点(可以稀疏化),它们需要与贝塞尔曲线拟合。我需要速度超过准确性,但合身度应该足够好以至于可以识别。我还在寻找一种我可以使用的算法,该算法没有过多地使用库(特别是NumPy)。 我已经阅读了几篇研究论文,但是都没有足够的细节来全面实施。有开源示例吗? 问题答案: 我有类似的问题,我从Graphics Gems(1990)中找到了有关Bezier曲线拟合的“一种自动拟合数字化

  • 问题内容: 我有一个带有HornetQ的JBoss-6服务器和一个队列: 有一个不同的消费者(在不同的机器)连接到这个队列中,但只有一个 单一的 消费者是活动的时间。如果我关闭此使用者,则消息将立即由其他使用者之一处理。 由于我的消息需要一些耗时的处理,因此我希望多个使用者同时处理其唯一消息。 我记得在早期版本的JBoss中也有类似的情况,该设置可以正常工作。在Jboss-6中,消息传递系统运行良