我正在尝试执行以下操作。我需要返回一个人记录,其中还包括那个人最老的狗的名字(当一个人有 >1 条狗时)。下面的查询返回NULL
. dogName
(我已经检查过并且有有效的数据)如果我删除连接查询的Top 1
andOrder by
部分,它会返回一个有效的dogName
,但不是“最古老的”狗。为什么添加TOP 1
并OrderBy
导致它返回NULL?
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'
注意:这只是一个与我不允许在论坛上发帖类似的查询。
另外,我无论如何都不是专家,所以我可能试图错误地解决这个问题。提前致谢。