gpt4 book ai didi

SQL获取其他表中某个日期最近的行

转载 作者:行者123 更新时间:2023-12-02 07:30:19 26 4
gpt4 key购买 nike

有一个表 TAB_A:

  ID  |    Date    |   Value  
--------------------------------
101 | 2014-03-01 | 101000001
101 | 2014-03-03 | 101000003
101 | 2014-03-06 | 101000006
102 | 2014-03-01 | 102000001
103 | 2014-03-01 | 103000001

并且,例如,另一个表 TAB_B 中的这条单条记录:

    ID  |    Date    |  TAB_A.Id 
-----------------------------------
40002 | 2014-03-05 | 101

我需要获取最接近(最近)TAB_A.ValueTAB_B.Date 字段 (在这种情况下将是“101000003”而不是“101000006”)。

我一直在寻找具有类似场景的其他响应(例如 this one ),但这并不是我所需要的。

有什么建议吗?预先感谢您的帮助。

编辑:我忘了提到 TAB_A 有超过 20 万条记录,TAB_B 有超过 5500 万条记录。

最佳答案

由于标记是 sql-server,Limit 将不起作用。相反,使用顶部

 SELECT TOP 1 ID, Date, Value 
FROM TAB_A
WHERE Date < (SELECT Date from TAB_B where ID=40002)
ORDER BY Date DESC

 SELECT  ID, Date, Value 
FROM tab_a
WHERE date=
(SELECT MAX(date)
FROM TAB_A
WHERE Date <
(SELECT Date
FROM TAB_B
WHERE ID=40002)
)

如果您只想在最后一个查询中获得 1 个结果,请使用 DISTINCT。例如,如果您要查找的日期是 2014 年 3 月 1 日,第二个查询将显示 3 个示例,只有 1 个不同。在第一个查询中,top 1 已经确保您只是有 1 个结果.

编辑:更新以下评论:

SELECT b.id, b.date, a.value FROM
(SELECT TOP 1 ID, Date, Value
FROM TAB_A
WHERE Date < (SELECT Date from TAB_B B where ID=40002)
ORDER BY Date DESC) a
,
(SELECT id,date,[TAB_A.id] FROM tab_b )b
WHERE a.id=b.[TAB_A.id]

请原谅我的大写字母/小写字母不一致...

关于SQL获取其他表中某个日期最近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500610/

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