zomiaa 2022-01-04 14:38 采纳率: 100%
浏览 959
已结题

sql语句多表连接查询,根据其中两个字段相同的去重

表 【TOP_USER】、表【TOP_EMPLOYEE】、表【TOP_ORGANIZATION】三表关联
【TOP_USER】这是人员ID和组织ID的对应关系表
id EMPLOYEE_ID ORG_ID remark
1 2123 77 ABCDEF
2 2123 82 ABCFF
3 2125 84 ABCEE
4 2129 99 ABCGG
……
【TOP_EMPLOYEE】这是人员ID和人员账号的对应关系表
id EMPLOYEE_ID EMPLOYEE_ACCOUNT remark
1 2123 zhangsan@123.csg.cn 张三
2 2125 zhangliu@123.csg.cn 张六
3 2129 zhangjiu@123.csg.cn 张九
……
【TOP_ORGANIZATION】这是组织ID和组织名称的对应关系表
id ORG_CODE ORG_ID ORG_NAME
1 06031315 77 组织企划
2 06031316 82 销售部门
3 06031317 84 后勤管理
4 06031318 99 管理部门
……

其中表 【TOP_USER】存在 EMPLOYEE_ID(人员ID字段)对应了多个ORG_ID(组织ID)
例如:2123这个人员ID对应了77和82两个组织ID
做三表关联,希望达到只显示一行2123这个人员ID的数据,根据EMPLOYEE_ID字段去重
一个人员ID对应多个组织ID的时候,只显示一条数据,根据人员ID去重。其他字段数据不重要
这是我写的sql,查出来会有EMPLOYEE_ID重复的数据,如何才能改成EMPLOYEE_ID无重复。

SELECT DISTINCT
TOP_USER.EMPLOYEE_ID,
TOP_EMPLOYEE.EMPLOYEE_ACCOUNT,
TOP_USER.ORG_ID,
TOP_ORGANIZATION.ORG_NAME
FROM
TOP_USER
LEFT JOIN TOP_EMPLOYEE ON TOP_USER.EMPLOYEE_ID = TOP_EMPLOYEE.EMPLOYEE_ID
LEFT JOIN TOP_ORGANIZATION ON TOP_USER.ORG_ID = TOP_ORGANIZATION.ORG_ID

  • 写回答

2条回答 默认 最新

  • zhang.yao Java领域新星创作者 2022-01-04 15:01
    关注
    # group分组下就好了
    SELECT
    TOP_USER.EMPLOYEE_ID,
    max(TOP_EMPLOYEE.EMPLOYEE_ACCOUNT) EMPLOYEE_ACCOUNT,
    max(TOP_USER.ORG_ID) ORG_ID,
    max(TOP_ORGANIZATION.ORG_NAME) ORG_NAME
    FROM
    TOP_USER
    LEFT JOIN TOP_EMPLOYEE ON TOP_USER.EMPLOYEE_ID = TOP_EMPLOYEE.EMPLOYEE_ID
    LEFT JOIN TOP_ORGANIZATION ON TOP_USER.ORG_ID = TOP_ORGANIZATION.ORG_ID
    group by TOP_USER.EMPLOYEE_ID
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接