gpt4 book ai didi

sql - 如何使用 JOIN 从表中获取最新行

转载 作者:太空狗 更新时间:2023-10-30 01:50:49 24 4
gpt4 key购买 nike

我有 5 个表的连接,以获取每个成员发布的任务,大约有 15 列。但是对于示例代码,我只取了其中的两个表。

SELECT TOP 5 
dbo.MemberMst.MemberID, dbo.MemberMst.fname,
dbo.TaskMst.TaskMstID, dbo.TaskMst.OnDate, dbo.TaskMst.Description
FROM
dbo.MemberMst
LEFT JOIN
dbo.TaskMst ON dbo.MemberMst.MemberID = dbo.TaskMst.MemberID

输出是:

MemberID fname  TaskMstID    OnDate                   Description
3 Ursula NULL NULL NULL
84 Opeyemi 30 2012-09-18 00:00:00.000 asd
85 test 21 2012-09-18 10:30:46.900 aaa
85 test 22 2012-09-18 10:31:04.967 eeee
85 test 23 2012-09-18 10:31:26.640 vvvv

在上面的查询中,我得到了 MemberID=85 的 3 行,他们发布了 3 个任务,但我只需要来自该成员的最新任务。如何获取成员发布的最新任务,以便结果为:-

MemberID fname  TaskMstID OnDate                Description
3 Ursula NULL NULL NULL
84 Opeyemi 30 2012-09-18 00:00:00.000 asd
85 test 23 2012-09-18 10:31:26.640 vvvv

我的意思是说每个 memberID 有任务只有一条记录?

感谢帮助...!

提前致谢...!

最佳答案

由于您使用的是 SQL Server 2008,因此可以利用窗口函数

尝试这样的事情:

SELECT  c.MemberID, c.fname, c.TaskMstID, c.OnDate, c.Description
FROM
(
SELECT a.MemberID, a.fname,
b.TaskMstID, b.OnDate, b.Description,
ROW_NUMBER() OVER (Partition BY a.MemberID ORDER BY b.OnDate DESC) RN
FROM MemberMst a
LEFT JOIN TaskMst b
ON a.MemberID = b.MemberID
) c
WHERE c.RN = 1

关于sql - 如何使用 JOIN 从表中获取最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com