mysql删除重复的数据

DELETE

FROM

FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT

WHERE

CONTRACT_COUNTERPART IN (

SELECT

CONTRACT_COUNTERPART

FROM

FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT

GROUP BY

CONTRACT_COUNTERPART

HAVING

COUNT(*) > 1

) and  TOTAL_CONTRACT_PRICE IN (

SELECT

TOTAL_CONTRACT_PRICE

FROM

FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT

GROUP BY

TOTAL_CONTRACT_PRICE

HAVING

COUNT(*) > 1

) and ym='2023-08' and BRANCH_ID = '50216'

 这个报错有人知道为什么吗? image.png

SQL yikefu 发布于 2023-9-4 16:59 (编辑于 2023-9-4 17:00)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
华莉星宸Lv7高级互助
发布于2024-5-15 08:19

表名需要添加别名

参考如下:

DELETE FROM FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT t

 WHERE t.CONTRACT_COUNTERPART IN

       (SELECT a.CONTRACT_COUNTERPART,COUNT(*)

          FROM FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT a

         GROUP BY a.CONTRACT_COUNTERPART

        HAVING COUNT(*) > 1)

   and t.TOTAL_CONTRACT_PRICE IN

       (SELECT b.TOTAL_CONTRACT_PRICE,COUNT(*)

          FROM FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT b

         GROUP BY b.TOTAL_CONTRACT_PRICE

        HAVING COUNT(*) > 1)

   and t.ym = '2023-08'

   and t.BRANCH_ID = '50216'

最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-9-4 17:05
最佳回答
0
3333xzxLv4初级互助
发布于2023-9-14 20:33

根据您提供的SQL语句,报错可能是由于您在子查询中使用了GROUP BY子句,而没有在子查询中选择聚合函数。这将导致MySQL引发错误,因为必须对非聚合列进行聚合或选择。

最佳回答
0
LazySheepLv7高级互助
发布于2024-5-15 14:43
DELETE fcsa   FROM FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT fcsa   JOIN (       SELECT CONTRACT_COUNTERPART, TOTAL_CONTRACT_PRICE       FROM FILL_CONTRACT_SUB_SUPPLY_CONTRACT_ACCOUNT       WHERE ym = '2023-08' AND BRANCH_ID = '50216'       GROUP BY CONTRACT_COUNTERPART, TOTAL_CONTRACT_PRICE       HAVING COUNT(*) > 1   ) duplicates   ON fcsa.CONTRACT_COUNTERPART = duplicates.CONTRACT_COUNTERPART      AND fcsa.TOTAL_CONTRACT_PRICE = duplicates.TOTAL_CONTRACT_PRICE   WHERE fcsa.ym = '2023-08' AND fcsa.BRANCH_ID = '50216';

  • 4关注人数
  • 396浏览人数
  • 最后回答于:2024-5-15 14:43
    请选择关闭问题的原因
    确定 取消
    返回顶部