这可能很简单,但是我正在寻找执行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