请高手帮我看下多表查询不显示重复记录问题

liu07998832 2014-05-26 11:44:14
我设计了二个表
A表
cid,a,b,c,cno
B表
tid e,f,tno
查询sql=select disditnct A.cid,A.a,A.b,A.c,B.e,B.f from A inner join B on A.cno=B.tno
总是出现少数重复记录
用group by 也一样,现在不知如何处理了,请高手指点下我吧?
...全文
201 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu07998832 2014-05-28
  • 打赏
  • 举报
回复
主要是出现相同记录,很多列相同,但只有一列不同。不知为什么会出现这样的情况。
文盲老顾 2014-05-28
  • 打赏
  • 举报
回复
declare @tb1 table (aid int identity,a nvarchar(50),b nvarchar(50),c nvarchar(50),ano int)
declare @tb2 table (bid int identity,d nvarchar(50),e nvarchar(50),f nvarchar(50),bno int)
insert into @tb1 (a,b,c,ano) values(1,1,1,1),(2,2,2,2),(1,2,3,1)
insert into @tb2 (d,e,f,bno) values(1,1,1,1),(2,2,2,2),(1,2,3,3)
select * from (select * from @tb1 where aid in (select max(aid) from @tb1 group by ano)) a inner join (select * from @tb2 where bid in (select max(bid) from @tb2 group by bno)) b on a.ano=b.bno order by ano
关键是你所说的重复需要按什么样的规则去除 最好你把现在搜索到的记录列一个出来,然后把期望的结果列出来,这样别人才能明白你到底想干什么
liu07998832 2014-05-28
  • 打赏
  • 举报
回复
有办法弄吗?请高手指点一下吧?
LinY_X 2014-05-27
  • 打赏
  • 举报
回复
那种重复? cno,bno重复的 其他字段是都一样呢 还是就cno,bno重复 其他字段不一样呢 要看具体的情况
什么都不能 2014-05-27
  • 打赏
  • 举报
回复
引用 8 楼 liu07998832 的回复:
是的,4楼的还有点不太清楚的,我的A表字段是这样的:cid,schterm,grade,classname,bzr,jsh,lno. B表中字段是这样的tid,schterm,cs,tname,tno sql=SELECT A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname FROM schtbno, teacherno WHERE (((A.schterm)='2014春学期') AND ((A.grade)='高一年级') AND ((B.cs)="音乐") AND ((A.lno) = A.tno)) GROUP BY A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname ORDER BY A.classname, A.jsh 结果总是有几行数据重复
你连表肯定会有重复,因为你没显示的字段是不一样的。
liu07998832 2014-05-27
  • 打赏
  • 举报
回复
sql=SELECT A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname FROM A,B WHERE (((A.schterm)='2014春学期') AND ((A.grade)='高一年级') AND ((B.cs)="音乐") AND ((A.lno) = A.tno)) GROUP BY A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname ORDER BY A.classname, A.jsh
liu07998832 2014-05-27
  • 打赏
  • 举报
回复
是的,4楼的还有点不太清楚的,我的A表字段是这样的:cid,schterm,grade,classname,bzr,jsh,lno. B表中字段是这样的tid,schterm,cs,tname,tno sql=SELECT A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname FROM schtbno, teacherno WHERE (((A.schterm)='2014春学期') AND ((A.grade)='高一年级') AND ((B.cs)="音乐") AND ((A.lno) = A.tno)) GROUP BY A.schterm, A.grade, A.classname, A.bzr,B.cs, B.jsh, B.tname ORDER BY A.classname, A.jsh 结果总是有几行数据重复
文盲老顾 2014-05-27
  • 打赏
  • 举报
回复
declare @tb1 table (aid int identity,a nvarchar(50),b nvarchar(50),c nvarchar(50),ano int)
declare @tb2 table (bid int identity,d nvarchar(50),e nvarchar(50),f nvarchar(50),bno int)
insert into @tb1 (a,b,c,ano) values(1,1,1,1),(2,2,2,2),(1,2,3,1)
insert into @tb2 (d,e,f,bno) values(1,1,1,1),(2,2,2,2),(1,2,3,3)
select Distinct * from @tb1 a inner join @tb2 b on a.ano=b.bno order by ano
不明白你说的重复是什么,是要 ano,bno相同的也只出现一次么?
什么都不能 2014-05-27
  • 打赏
  • 举报
回复
引用 6 楼 liu07998832 的回复:
用子查询行吗?可写详细点吗?
你的意思是不是显示A表的记录,同时需要显示B表中的一些字段?数量以A表为准?如果这样的话,可以参考下4楼方案。
liu07998832 2014-05-27
  • 打赏
  • 举报
回复
用子查询行吗?可写详细点吗?
liu07998832 2014-05-27
  • 打赏
  • 举报
回复
有少量的cid记录重复,这些重复记录中只是有一列值不相同,如用子查询可行吗?可详细点吗?谢谢!
什么都不能 2014-05-27
  • 打赏
  • 举报
回复
这个情况不适合用表连接,用子查询 select a.a (select b.a from t_b b where b.b = a.b) as b where a.c like '%c%';
Dogfish 2014-05-27
  • 打赏
  • 举报
回复
有实际的例子吗?Distinct已经是取唯一的了。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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