【发布时间】:2016-06-09 13:23:23
【问题描述】:
我编写了一个选择查询来从一个表(一对多)中获取前 1 条记录,该表对每个 ID 都有多条记录。例如 ID = 1、2 和 3 .. 每个都有多行。该记录有一个日期字段,因此我按该日期字段排序并获取该日期的最新记录。当我运行查询时,我缺少 ID 1 和 4 的记录。我检查了表,这两个记录有多个记录。我做了一个不同的计数,它返回超过 3000,我的查询只返回 1400。同样的 ID存在于表 1 中。奇怪的是,当我删除 Top 1 时,我看到了所有的 ID。查询应该获取每个 ID 的第一条记录,对吗?
这是我的查询
SELECT
table2.RecentDate,
table2.Name,
table2.Address,
table2.City,
table2.State
FROM [table1]
INNER JOIN
( SELECT Top 1 *
FROM [table2]
ORDER BY [table2].RecentDate DESC
) table2
ON [table1].[ID] = table2.[ID]
非常感谢任何帮助,
谢谢。
【问题讨论】:
-
如果你做一个内连接,那么它只会显示表 1 和表 2 的 ID 都存在的结果。因此,table2 中可能没有具有这些 ID 的记录。你也只能得到按日期排序的前 1 个,这根本不考虑 ID..
-
你的内部查询选择只有1条记录!!!
TOP 1不是每个组的前1名,是整个数据的前1名! -
两个表中都存在ID
-
为什么需要
Table1?