SQL inner join去重复

uwudixue14hao 2012-10-25 10:33:48
使用inner join后产生一对多 如何才能去掉一对多产生的重复数据
tDepartment:
1 HDB-001 混蛋部
2 HDB-002 草泥马部
3 HDB-003 神马部
tCompanyEmployee:
1 1 HD-001 混蛋1号 男
2 1 HD-002 混蛋2号 男
3 2 HD-003 草泥马1号 男
4 3 HD-004 神马1号 男
5 3 HD-005 神马2号 男
tEmployee:
1 1 1 admin admin
2 2 1 admin2 admin2
3 3 2 admin3 admin3
4 4 3 admin4 admin4
5 5 3 admin5 admin5
语句:
select distinct
[tEmployee].[EmpName]as'User',[tEmployee].[EmpPassword],
[tDepartment].[DeptId],[tDepartment].[DeptName],[tDepartment].[DeptNO],
[tCompanyEmployee].[EmpName],[tCompanyEmployee].[EmpNO],[tCompanyEmployee].[Sex]
from [tEmployee]
inner join
(
[tDepartment] inner join [tCompanyEmployee]
on [tDepartment].[DeptID]=[tCompanyEmployee].[DeptID]
)
on [tEmployee].[DeptID]=[tDepartment].[DeptID] and [tEmployee].[DeptID]=[tCompanyEmployee].[DeptID]
结果:
admin admin 1 混蛋部 HDB-001 混蛋1号 HD-001 男
admin admin 1 混蛋部 HDB-001 混蛋2号 HD-002 男
admin2 admin2 1 混蛋部 HDB-001 混蛋1号 HD-001 男
admin2 admin2 1 混蛋部 HDB-001 混蛋2号 HD-002 男
admin3 admin3 2 草泥马部 HDB-002 草泥马1号 HD-003 男
admin4 admin4 3 神马部 HDB-003 神马1号 HD-004 男
admin4 admin4 3 神马部 HDB-003 神马2号 HD-005 男
admin5 admin5 3 神马部 HDB-003 神马1号 HD-004 男
admin5 admin5 3 神马部 HDB-003 神马2号 HD-005 男
...全文
2960 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paopao_426 2014-09-12
  • 打赏
  • 举报
回复
六楼碉堡....
qingcheng116 2013-09-19
  • 打赏
  • 举报
回复
看起来还真有点费劲。这几天我也遇到了inner join后出现重复数据的问题。
uwudixue14hao 2012-10-25
  • 打赏
  • 举报
回复
ok搞定
条件不够 所以无法去掉重复
tDepartment字段:
[DeptID] [DeptNO] [DeptName]
tCompanyEmployee字段:
[cEmpID] [DeptID] [EmpNO] [EmpName] [Sex]
tEmployee字段:
[EmpID] [cEmpID] [DeptID] [EmpName] [EmpPassword]
第二个表和第三个表里面有多个字段相同
就在inner join 'table' on后面再加一个条件
语句:
create view v_tDep_tCom
as
select
[tDepartment].[DeptId],[tDepartment].[DeptName],[tDepartment].[DeptNO],
[tCompanyEmployee].[cEmpID],[tCompanyEmployee].[EmpName],[tCompanyEmployee].[EmpNO],[tCompanyEmployee].[Sex]
from [tDepartment]
inner join [tCompanyEmployee]
on [tDepartment].[DeptID]=[tCompanyEmployee].[DeptID]
GO

select *
from [v_tDep_tCom]
inner join [tEmployee]
on [v_tDep_tCom].[DeptID]=[tEmployee].[DeptId] and [v_tDep_tCom].[cEmpID]=[tEmployee].[cEmpID]
XBodhi. 2012-10-25
  • 打赏
  • 举报
回复


select distinct * from

(

select
[tEmployee].[EmpName]as'User',[tEmployee].[EmpPassword],
[tDepartment].[DeptId],[tDepartment].[DeptName],[tDepartment].[DeptNO],
[tCompanyEmployee].[EmpName],[tCompanyEmployee].[EmpNO],[tCompanyEmployee].[Sex]
from [tEmployee]
inner join [tDepartment] on [tEmployee].[DeptID]=[tDepartment].[DeptID] inner join [tCompanyEmployee] on [tEmployee].[DeptID]=[tCompanyEmployee].[DeptID]


)
EnForGrass 2012-10-25
  • 打赏
  • 举报
回复

select distinct
[tEmployee].[EmpName]as'User',[tEmployee].[EmpPassword],
[tDepartment].[DeptId],[tDepartment].[DeptName],[tDepartment].[DeptNO],
[tCompanyEmployee].[EmpName],[tCompanyEmployee].[EmpNO],[tCompanyEmployee].[Sex]
from [tEmployee]
inner join [tDepartment] on [tEmployee].[DeptID]=[tDepartment].[DeptID] inner join [tCompanyEmployee] on [tEmployee].[DeptID]=[tCompanyEmployee].[DeptID]
uwudixue14hao 2012-10-25
  • 打赏
  • 举报
回复
已经有distinct了 语句的第一行就有distinct
快乐的小二兔 2012-10-25
  • 打赏
  • 举报
回复
SELECT distinct * from table
查询后面加上distinct 去除重复数据

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧