日期:2014-05-18  浏览次数:20386 次

求助,关于多表查询取出重复内容
希望哥哥姐姐帮帮忙

SELECT * FROM 
(SELECT * FROM OutWareAdvice where cMATypeCode = '商品通知单' AND bValid = 1)AS A 
LEFT JOIN cdcust_bank AS B 
ON A.cCustTradeId=B.cCustTradeId


原来是OutWareAdvice和cdcust_trade这两个表关联,这个两个都是主表,所以关联不会出现重复数据
OutWareAdvice是商品主表
cdcust_trade是客户主表,主键是cCustTradeId
cdcust_bank是客户副表,外键是cCustTradeId

现在OutWareAdvice表和cdcust_bank表关联,cdcust_bank因为是副表,所以可能会关联0条数据,也可能关联多条数据
关联0条数据的话。

我要的效果是根据OutWareAdvice 找出一条数据,不管cdcust_bank是0条数据还是多条数据,都找出1条数据,至于关联的是cdcust_bank的哪一条数据就无所谓了,只要找出来,不重复就可以了

因为cdcust_bank可能是0条数据,所以我用LEFT JOIN,这样应该没问题把?但是如果cdcust_bank有多条关联数据多额话,我的多表查询会找出多条数据,这个要怎么解决呢?我只要1条数据,至于关联cdcust_bank表的哪个数据就完全无所谓了。

------解决方案--------------------
SQL code

--例,此处的@t2相当于你的cdcust_bank
declare @t1 table(id1 int,id2 int);
declare @t2 table(id2 int,name varchar(20));
insert into @t1 select 1,1 union select 2,2
insert into @t2 select 1,'name1' union select 1,'name2';
select t1.id1,isnull((select top 1 name from @t2 t2 where t2.id2=t1.id2),'') name from @t1 t1;

------解决方案--------------------
给个思路:查的时候先group by分组,再找出 count(某个字段)>1的