如何在SQL Server 2000中使用内部联接从第二个表中选择底行?

时间:2014-09-02 05:31:51

标签: sql-server-2000

如何使用两个表中的内连接从第二个表中选择底行?

此处[customer records]包含客户详细信息,而photoinfo包含photodetails。

SELECT 
    CR.customernumber, CR.customername, 
    CR.Addressline1, CR.city, CR.state, 
    CR.pincode, CR.landline, CR.mobile, 
    CR.dob, CR.gender,
    PR.FileName, CR.remarks, CR.fulladdress, CR.regno,
    CR.qualification, CR.bg, CR.fname, 
    CR.field1, CR.field2, CR.field3, CR.field4, CR.field5,       
    CR.sign 
from 
    [customer records] CR
inner join 
    photoinfo PR on PR.customernumber = CR.customernumber
where 
    CR.customernumber >= 5050 and CR.customernumber <= 5100
order by 
    CR.customernumber

此处filename是来自photoinfo的文本字段。我需要从photoinfo中选择文件名的最后一行

提前致谢

客户记录

cnumber cname             Mobile       Gender
2000    K.Deepalakshmi                  F
2001    J.Geetha         9789426497     F

photoinfo

cid     cnumber  Filename
5152    2000     B6216.jpg
5153    2001     B6203.jpg
5154    2001     B6209.jpg
5155    2001     B6205.jpg

这里我想基于cnumber(customernumber)加入上面两个表。我想加入最后一个或基于cid的photoinfo中的第一个文件名。

预期输出

cnumber cname            filename   Mobile       Gender
2000    K.Deepalakshmi   B6216.jpg                F
2001    J.Geetha         B6205.jpg  9789426497    F

1 个答案:

答案 0 :(得分:-1)

创建&amp;插入客户表

create table #customer(cnumber decimal(18,0),cname varchar(100),Mobile  varchar(100),Gender varchar(1))

insert into #customer values
(2000,'K.Deepalakshmi','','F'),
(2001,'J.Geetha','9789426497','F')

创建&amp;插入照片信息表

create table #photoinfo(cid decimal(18,0),cnumber decimal(18,0),filename varchar(100))

insert into #photoinfo values
(5152,2000,'B6216.jpg'),
(5153,2001,'B6203.jpg'),
(5154,2001,'B6209.jpg'),
(5155,2001,'B6205.jpg')

<强>结果

select c.cnumber,c.cname,p.filename,c.Mobile,c.Gender
from #customer c
join #photoinfo p on p.cnumber=c.cnumber
join (select c.cnumber,max(p.cid) cid
    from #customer c
    join #photoinfo p on p.cnumber=c.cnumber
    group by c.cnumber) r on r.cnumber=p.cnumber and p.cid=r.cid