我已經寫了一個select查詢來從表(一對多)中獲取前1條記錄,該表對每個ID有多個記錄。例如,ID = 1,2和3 ..每個都有多行。該記錄有一個日期字段,因此我按該日期字段進行排序並在該日期之前獲取最新記錄。當我運行我的查詢時,我缺少ID 1和4的記錄。我檢查了這個表,並且這些2有多個記錄。我做了一個不同的計數,它返回了3000以上,我的查詢返回了1400。存在於表1中。奇怪的是,當我刪除Top 1時,我看到了所有的ID。查詢應該爲每個ID記錄第一條記錄,對嗎?訪問選擇Top 1沒有返回所有行
這裏是我的查詢
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存在的結果。所以可能是表2中沒有這些ID的記錄。你也只能得到按日期排序的前1名,根本沒有考慮到ID .. – Mono
你的內部查詢選擇**只有1條記錄**! TOP 1並不是每個組的前1名,它的TOP 1來自整個數據! – sagi
這兩個表中存在的ID – John