mysql根据某个字段去重数据,使用any_value函数和group by函数

mysql根据某个字段去重数据,使用any_value函数和group by函数

简单例子

在这里插入图片描述

sql分析

  1. 原sql
    SELECT
    rt.name_ procActivityName,
    rt.ID_ procActivityId,
    re.BUSINESS_KEY_,
    rp.KEY_ processKey,
    a.*,
    u1.user_id createUserId,
    u1.nick_name createUserName,
    u2.user_id assigneeUserId,
    u2.nick_name assigneeUserName
    FROM
    act_ru_task rt
    LEFT JOIN act_ru_execution re ON re.ID_ = rt.PROC_INST_ID_
    RIGHT JOIN asset_bills_run a ON a.bills_id = REPLACE ( re.BUSINESS_KEY_, ‘asset_’, ‘’ )
    LEFT JOIN act_re_procdef rp ON re.PROC_DEF_ID_ = rp.id_
    LEFT JOIN sys_user u1 ON u1.user_name = a.create_by
    LEFT JOIN sys_user u2 ON u2.user_id = rt.ASSIGNEE_
    WHERE
    a.process_run_id IS NOT NULL

在这里插入图片描述

由于这条业务数据对应了两个处理人,导致前面的数据都是一样的,而我只需要展示其中一个处理人就好了.

解决方式

2.新sql
SELECT
any_value(a.bills_id),
any_value(rt.name_) procActivityName,
any_value(rt.ID_) procActivityId,
any_value(re.BUSINESS_KEY_) BUSINESS_KEY_,
any_value(rp.KEY_) processKey,
a.*,
any_value(u1.user_id) createUserId,
any_value(u1.nick_name) createUserName,
any_value(u2.user_id) assigneeUserId,
any_value(u2.nick_name) assigneeUserName
FROM act_ru_task rt
LEFT JOIN act_ru_execution re ON re.ID_ = rt.PROC_INST_ID_
RIGHT JOIN asset_bills_run a ON a.bills_id = REPLACE ( re.BUSINESS_KEY_, ‘asset_’, ‘’ )
LEFT JOIN act_re_procdef rp ON re.PROC_DEF_ID_ = rp.id_
LEFT JOIN sys_user u1 ON u1.user_name = a.create_by
LEFT JOIN sys_user u2 ON u2.user_id = rt.ASSIGNEE_
WHERE
a.process_run_id IS NOT NULL GROUP BY a.bills_id
在这里插入图片描述

参考资料

参考资料:https://www.cnblogs.com/chancy/p/10026097.html
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值