一个查询的问题

qiudong_5210 2013-03-15 03:31:48
表A为为问题表 ,表B为回复表,想取出最近回复的三个问题
B表中的AFID是A表中的APID


CREATE TABLE A (APID INT,ANAME VARCHAR(200),AUserId INT)
INSERT INTO A(APID,ANAME,AUserId)VALUES(1,'title1',25)
INSERT INTO A(APID,ANAME,AUserId)VALUES(2,'title2',25)
INSERT INTO A(APID,ANAME,AUserId)VALUES(3,'title3',27)
INSERT INTO A(APID,ANAME,AUserId)VALUES(4,'title4',25)

CREATE TABLE B (BPID INT,BNAME VARCHAR(200),BDate DATETIME,BUserID INT,AFID INT)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(1,'asdf1','2013-01-11 11:00:11',56,1)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(2,'asdf1','2013-01-12 11:00:11',99,1)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(3,'asdf1','2013-01-13 11:00:11',56,2)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(4,'asdf1','2013-01-14 11:00:11',58,2)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(5,'asdf1','2013-01-15 11:00:11',56,3)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(6,'asdf1','2013-01-16 11:00:11',78,3)
INSERT INTO B(BPID,BNAME,BDate,BUserID,AFID)VALUES(7,'asdf1','2013-01-17 11:00:11',64,1)


--最后想得到 结果如下
--APID ANAME BUserId
--1 title1 64
--3 title3 78
--2 title2 58
...全文
227 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫侠 2013-04-03
  • 打赏
  • 举报
回复
select * from A LEFT JOIN B ON A.APID=B.AFID ORDER BY B.BDATE
ahhfql 2013-04-03
  • 打赏
  • 举报
回复
学习
chuanzhang5687 2013-03-22
  • 打赏
  • 举报
回复
SELECT A.APID,A.ANAME,B.BUSERID
FROM A , 
(
	SELECT *
	FROM B T
	WHERE 
    NOT EXISTS(SELECT 1 FROM B WHERE B.AFID = T.AFID AND B.BDATE > T.BDATE)
) B
WHERE A.APID = B.AFID
ORDER BY B.BDATE DESC

/*
APID        ANAME     BUSERID
----------- --------- -------
1           title1    64
3           title3    78
2           title2    58

(3 行受影响)
  • 打赏
  • 举报
回复
select apid,aname,buserid from (select *,row=row_number()over(partition by b.afid order by bdate desc) from a join b on a.apid=b.afid)t where row=1

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧