SQL两个表联合查询 想去除其中结果重复的内容 麻烦解答 现有语句如下
SELECT*FROMA,BWHEREA.字段1=B.字段2ANDA.字段3='00005'AND(B.字段4>=1)数据来源是A,B两个表其中A字段1和B字段2关联,查...
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中重复的内容,求各位解答,如原语句有错误也请各位知道一下 ,谢谢。 展开
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个回答
展开全部
你的句子语法没错,只是功能不能实现。
找重复的要按字段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分组,求和。然后把数目大于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个商品中的哪一个去显示出来??
展开全部
楼主只要加个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)
SELECT *
FROM A,B
WHERE A.字段1=B.字段2 AND A.字段3='00005' AND
( select distinct B.字段4 from B where B.字段4>=1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-21
展开全部
SELECT *
FROM A,B
on A.字段1=B.字段2 where (A.字段3='00005') AND (B.字段4 >=1)
FROM A,B
on A.字段1=B.字段2 where (A.字段3='00005') AND (B.字段4 >=1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-21
展开全部
我想问一下A表字段1和B表的字段2是不是主外键关系呢
追问
两个字段是两个表的相同字段 相关联的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询