B表是A表的明细表,A表中的一条记录对应B表中的多条记录,我要查到结果只想取B表中对应A表的一条,不要多条都出来。怎么搞,在线等,大哥们速度啊!!!
表结构如下 :
A表
id zd1 zd2
1 111 111
2 222 222
B表
aid zd3 zd4
1 www www
1 sss sss
2 qqq qqq
2 eee eee
我想要的查询结果:
id zd1 zd2 zd3 zd4
1 111 111 www www
2 222 222 qqq qqq
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-12-25 15:24:58
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go
create table [A]([id] int,[zd1] int,[zd2] int)
insert [A]
select 1,111,111 union all
select 2,222,222
--> 测试数据:[B]
if object_id('[B]') is not null drop table [B]
go
create table [B]([aid] int,[zd3] varchar(3),[zd4] varchar(3))
insert [B]
select 1,'www','www' union all
select 1,'sss','sss' union all
select 2,'qqq','qqq' union all
select 2,'eee','eee'
--------------开始查询--------------------------
select a.*,b.zd3,b.zd4 from [A] a INNER JOIN (SELECT aid,MAX(zd3)zd3,MAX(zd4)zd4 FROM b GROUP BY aid) b ON a.id=b.aid
----------------结果----------------------------
/*
id zd1 zd2 zd3 zd4
----------- ----------- ----------- ---- ----
1 111 111 www www
2 222 222 qqq qqq
*/
------解决方案--------------------
取www www 还是sss sss还什么规则么?
还是取哪个都行?
select a.*,b.zd3,b.zd4 from A表 a left join
(
select aid , max(zd3) as zd3 , max(zd4) as zd4 from B表 group by aid
) b on a.id =b.aid
------解决方案--------------------
create table A表(id int, zd1 int, zd2 int)
insert into A表
select 1 ,111, 111 union all
select 2 ,222, 222
create table B表(aid int, zd3 varchar(20), zd4 varchar(20))
insert into B表
select 1 ,'www' ,'www' union all
select 1 ,'sss' ,'sss' union all
select 2 ,'qqq' ,'qqq' union all
select 2 ,'eee' ,'eee'
select a.*,b.zd3,b.zd4
from A表 a
inner join
(
select *,
ROW_NUMBER() over(partition by aid order by @@servername) rownum
from B表
)b
on a.id = b.aid