SQL两个表联合查询 想去除其中结果重复的内容 麻烦解答 现有语句如下

SELECT *
FROM A,B
WHERE A.字段1=B.字段2 AND A.字段3='00005' AND (B.字段4 >=1)
数据来源是A,B两个表 其中A字段1和B字段2关联,查询A中字段3是000005的数据,并且在B的字段4中数量大于等于1. 现在想要做的是 如何去除字段4中重复的内容,求各位解答,如原语句有错误也请各位知道一下 ,谢谢。

你的句子语法没错,只是功能不能实现。
找重复的要按字段4分组,求和。然后把数目大于1的找出来就行了。
不知道你的去除是直接删除还是不在查询结果中显示。
select *
from A join B on A.字段1=B.字段2
where 字段4 not in(select 字段4
from B
group by 字段4
having COUNT(*)>1)

这个句子不显示字段4重复的行
然后在后边加上 and A.字段1=B.字段2 AND A.字段3='00005' AND (B.字段4 >=1)追问

首先谢谢
要求是现实出来 不是删除
按照你的这个命令 可以执行 只是本来几百的结果只剩下一二十个,这是为啥啊?
现在的目的是让字段4中重复的只显示一个 但是字段4中只是数量信息 而名称信息是表A中的另外一个字段 名称在表A中是不重复的 就像表A是商品基本信息 而表B的字段4是商品库存一样 但是商品库存分批次重复了 我想返回的只是有库存的商品

追答

只剩十几个的原因是你在字段4中重复的太多了,上边的句子是只要字段4有重复就不显示,再加上你 给出的and A.字段1=B.字段2 AND A.字段3='00005' AND (B.字段4 >=1)条件的限制。

按你的意思是不能实现的,比如4字段有5个1,而且分别对应A表中的5中不同商品(是这个情况吗?)。要是只显示1个1,那让5个商品中的哪一个去显示出来??

追问

是的 是想5个1让他们都显示出来 不能实现吗 谢谢了

追答

当然不行。你想想,A表有灯泡,桌子,椅子,杯子,本子,库存都是1。就是字段4对应5个1,

你就显示1个1 这5种商品显示哪一个?

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-22
楼主只要加个distinct 字段就可以满足了,
SELECT *
FROM A,B
WHERE A.字段1=B.字段2 AND A.字段3='00005' AND
( select distinct B.字段4 from B where B.字段4>=1)
第2个回答  2013-07-21
SELECT *
FROM A,B
on A.字段1=B.字段2 where (A.字段3='00005') AND (B.字段4 >=1)
第3个回答  2013-07-21
我想问一下A表字段1和B表的字段2是不是主外键关系呢追问

两个字段是两个表的相同字段 相关联的

SQL两个表联合查询 想去除其中结果重复的内容 麻烦解答 现有语句...
WHERE A.字段1=B.字段2 AND A.字段3='00005' AND (B.字段4 >=1)数据来源是A,B两个表 其中A字段1和B字段2关联,查询A中字段3是000005的数据,并且在B的字段4中数量大于等于1. 现在想要做的是 如何去除字段4中重复的内容,求各位解答,如原语句有错误也请各位知道一下 ,谢谢。 展开  我来答 4个回...

一个sql怎样在两个表的联合查询查出来的结果里直接去除重复的记录
一个sql怎样在两个表的联合查询查出来的结果里直接去除重复的记录 sql 查询不重复的记录 可以使用 having count group by 组合 先把不重复数据的id查询出来 通过count()计算 只有数目为1的才是不重复的数据 然后通过in选择出不重复记录的数据 例子:统计出a表中name不重复的所有记录 select b.*...

SQL 中两张表合并后,如何删除重复项?
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录d...

如何删除sql 数据库表中某两个字段相同的记录
需要用连接查询来处理。如有以下2张表:查询2张表id和name字段内容完全相同的内容,可用如下语句:select a.* from test a,test1 b where a.id=b.id and a.name=b.name;结果:说明,两表连接where条件要写上关联条件,因为提问是两个字段完全相等,所以就写作:a.id=b.id and a.name=b.nam...

sql语句查询两张表所有数据,去除重复项降序排列
如果两张表字段一样的话 select * from (select * from 表1 union select * from 表2) order by id desc 如果不一样,那就选出需要选出的字段即可

用sql语句进行多表连接查询出现重复数据
1、在电脑上打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表。2、输入“select * from user where name in (select name from user group by name having count(name) > 1) ”sql语句,点击运行可以看到查询出了数据库中user表的重复数据。3、通过“delete from user where name...

Access中如何同时删除两个表中ID相同的记录
)b on a.id=b.id where b.id is null 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录...

SQL语句查询 如何删除重复多余的数据
2)在SQL中用distinct来消除重复出现的字段值。使得每个字段值只出现一次。 具体用法如下:select distinct 字段名 from 表;distinct 字段名 意思就是只显示一次该字段名一般情况下和order by 结合使用,这样可以提高效率。 所以这个问题的答案是:select distinct 1,2,3,4 from 表;1,2,3,4分别代表第一,二,三,...

sql语句两表查询,但是有部分重复结果,想让相同部分只显示一条,怎么写...
很显然,用DISTINCT去掉重复记录 select DISTINCT a,b,表1.c,d,e from 表1,表2 where 表1.C=表2.C

SQL查询,如何去除重复的记录?
首先,先说明一个问题。这样的结果出现,说明系统设计是有问题的。其次删除重复数据,你要提供你是什么数据库。不同数据库会有不同的解决方案。关键字Distinct 去除重复,如下列SQL,去除Test相同的记录;1. select distinct Test from Table2. 如果是要删除表中存在的重复记录,那就逻辑处理,如下:3....

相似回答