这可能很简单,但是我正在寻找执行INNER JOIN的原始SQL,但仅根据条件在第二个表上返回匹配项之一。

给定两个表:

**TableOne**
 ID  Name
 1   abc
 2   def

**TableTwo**
 ID    Date
 1     12/1/2014
 1     12/2/2014
 2     12/3/2014
 2     12/4/2014
 2     12/5/2014

我想加入,但只返回第二个表中的最新日期:
Expected Result:
1   abc   12/2/2014
2   def   12/5/2014

我可以像这样在LINQ中轻松完成此操作:
TableOne.Select(x=> new { x.ID, x.Name, Date = x.TableTwo.Max(y=>y.Date) });

因此,换句话说,上面的LINQ语句在原始SQL中会转换为什么?

最佳答案

您可以使用汇总查询将第一个表连接起来:

SELECT t1.id, d
FROM   TableOne t1
JOIN   (SELECT   id, MAX[date] AS d
        FROM     TableTwo
        GROUP BY id) t2 ON t1.id = t2.id

10-04 10:54
查看更多