我正在嘗試做下面的事情。我需要返回一個人的記錄,該記錄還包括該人最古老的狗的名字(因爲當一個人有一條狗時)。以下查詢返回NULL
爲dogName
。 (我已經檢查並且有有效的數據)如果我刪除Top 1
和Order by
部分連接查詢,它將返回一個有效的dogName
,但不是「最老的」狗。爲什麼添加TOP 1
和OrderBy
會導致它返回NULL?我可以使用Top 1和Order By作爲連接的一部分嗎?
SELECT
pt.firstName [FirstName],
pt.lastName [LastName],
joinQuery.dogName [dogName]
FROM dbo.PersonTable pt
LEFT OUTER JOIN
(
SELECT
TOP 1
dt.dogName [dogName],
dt.dogAge [dogAge]
FROM
DogTable dt
ORDER BY dt.dogAge
) joinQuery ON joinQuery.PersonId = pt.Id
WHERE
pt.firstName = 'john'
注意:這只是一個類似的查詢,我不允許在論壇發帖。
此外,我不是任何方式的專家,所以我可能會嘗試錯誤地解決此問題。提前致謝。
注意,最長壽的狗是'ORDER BY dt.dogage DESC'。 –
根據有效數據,誰擁有最古老的狗? –
你真的運行過這個查詢嗎?子查詢甚至沒有'PersonId'作爲返回的列。 – Taryn