22,210
社区成员
发帖
与我相关
我的任务
分享
create table ptable(bid varchar(10),bname varchar(20),btype varchar(10))
go
insert into ptable select 'b1001','名称1','aaa'
insert into ptable select 'b1002','名称2','bbb'
insert into ptable select 'b1003','名称3','ccc'
insert into ptable select 'b1004','名称4','ddd'
insert into ptable select 'b1005','名称5','eee'
go
create table dtable(did varchar(10),bid varchar(10),dcontent varchar(20),dnumber decimal(18,2))
go
insert into dtable select 'd1001','b1001','1111111111',1.11
insert into dtable select 'd1002','b1001','2222222222',1.55
insert into dtable select 'd1003','b1001','3333333333',1.25
insert into dtable select 'd1004','b1002','4444444444',6.4
insert into dtable select 'd1005','b1002','5555555555',10.5
go
select p.*,d.did,d.dcontent,d.dnumber
from ptable p left join (select * from dtable t where not exists(select 1 from dtable where bid=t.bid and dnumber>t.dnumber)) d
on p.bid=d.bid
go
drop table ptable,dtable
go
/*结果
bid bname btype did dcontent dnumber
---------- -------------------- ---------- ---------- -------------------- --------------------
b1001 名称1 aaa d1002 2222222222 1.55
b1002 名称2 bbb d1005 5555555555 10.50
b1003 名称3 ccc NULL NULL NULL
b1004 名称4 ddd NULL NULL NULL
b1005 名称5 eee NULL NULL NULL
(所影响的行数为 5 行)
*/
select m.* , n.did,n.dcontent,n.dnumber from ptable m left join
(select * from dtable t where dnumber = (select max(dnumber) from dtable where bid = t.bid)) n
on m.bid = n.bid
select bid, bname, btype, did, dcontent, dnumber
from ptable p
left join (select * from dtable t where not exists(select 1 from dtable where did=t.did and dnumber>t.dnumber)) d
on p.bid=d.did
select p.*,d.did,d.dcontent,d.number
from ptable p left join (select * from dtable t where not exists(select 1 from dtable where bid=t.bid and dnumber>t.dnumber) d
on p.bid=d.bid
select p.*,d.did,d.dcontent,d.number
from ptable p left join (select * from dtable t where not exists(select 1 from dtable where bid=t.bid and dnumber>t.dnumber) d
where p.bid=d.bid