如何获得匹配的行Left Outer Join

时间:2013-11-25 17:37:06

标签: tsql

这次我以为我弄明白了;但是我的大脑怎么解释这个呢。不,为此,我需要专家。

根据Jeff Atwood A Visual Explanation of SQL Joins左外连接从表A中生成一组完整的记录,其中包含表B中的匹配记录(如果可用)。

SELECT R.[Computer]
      ,L.[User]
      ,L.MaxDate
      ,R.[Notes]
      ,R.[ID]
From (
    SELECT [User], max([StartDate]) as MaxDate
    FROM <Table1> 
    Group by [User]
    ) As L
Left Outer Join <Table1> as R --Self join
on L.MaxDate = R.StartDate

左侧的MaxDate始终只为每个用户返回一个日期。这应该与右侧的一个匹配行匹配。或者我想。我为每个日期和用户收到多个项目。

此处的目的是使用MaxDate返回每个用户的所有列,以获取每个用户的最新日期。由于日期是唯一的,我应该只为每个用户获得一行,但我得到几个。

如何根据on L.MaxDate = R.StartDate将结果集限制为单个匹配行?

1 个答案:

答案 0 :(得分:1)

如果为多个用户找到相同的StartDate,则会从R获得多个匹配项。将用户添加到您的加入条件。