gpt4 book ai didi

SQL 使用另一个表中的最新数据更新一个表 - 条件

转载 作者:行者123 更新时间:2023-12-04 20:54:10 32 4
gpt4 key购买 nike

我找不到与我正在尝试做的事情相匹配的场景。

我有一张表,其中包含用户 ID、订阅包 ID 和订阅日期。

#Subscription 用户 ID 14525398 的示例数据:

UserID      Package     Date
14525398 188535 2011-05-17 00:00:00.000
14525398 188535 2011-06-16 00:00:00.000
14525398 188536 2011-06-23 00:00:00.000

在上面的示例中,此人在 6 月 16 日订阅了 PackageID 188535。在 6 月 23 日,他们升级到 PackageID 188536。

在另一个表中,我有他们的下载历史记录,但我想做的是导出他们在下载日期订阅的 PackageID。此下载表包含 UserID、下载次数、下载日期和没有我需要更新的值的 PackageID。

#Download 表的示例数据是:

UserID      Dloads  Date                PackageID
14525398 3 2011-06-18 00:00:00.000 0
14525398 2 2011-06-18 00:00:00.000 0
14525398 2 2011-06-19 00:00:00.000 0
14525398 5 2011-06-24 00:00:00.000 0
14525398 2 2011-06-18 00:00:00.000 0

使用上面的示例,我需要一个查询来准确显示第四条记录(5 次下载记录)在 PackageID 188536 上,因为这是下载日期 2011-06-24 之前的最新包,而其余的将在 PackageID 188535 上。

我试过这样更新:

UPDATE #Download SET PackageID = (
SELECT TOP 1 PackageID
FROM #subscription
WHERE userID = #Download.userID AND Date <= #Download.Date
)

然而,这只是不准确地将它们全部设置为 188535。如前所述,2011 年 6 月 24 日的下载应设置为 PackageID 188536。

如有任何帮助,我们将不胜感激。 SQL Server 2008。

最佳答案

UPDATE #Download SET PackageID = (
SELECT TOP 1 PackageID
FROM #subscription
WHERE userID = #Download.userID AND Date <= #Download.Date
order by Date desc
)

我认为它应该工作...

关于SQL 使用另一个表中的最新数据更新一个表 - 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898560/

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