假设我有几百万的记录表TAB1:如何编写SQL和LINQ以获取条件中某条记录的结果?
Tab1(id, id1,id2, value, ...)
有了这样的SQL:
Select * from Tab1 Where id1=123;
我得到100条记录。那么我想从这100条记录中获得一个最大的id值。
如何为此编写最简单的SQL?
当我使用EF将此表匹配到EF中的实体时,如何编写LINQ以获得相同的结果?
假设我有几百万的记录表TAB1:如何编写SQL和LINQ以获取条件中某条记录的结果?
Tab1(id, id1,id2, value, ...)
有了这样的SQL:
Select * from Tab1 Where id1=123;
我得到100条记录。那么我想从这100条记录中获得一个最大的id值。
如何为此编写最简单的SQL?
当我使用EF将此表匹配到EF中的实体时,如何编写LINQ以获得相同的结果?
这可以通过顺序完成BY和TOP。
在SQL:
SELECT TOP 1 *
FROM Tab1
WHERE id1 = 123
ORDER BY id desc
在LINQ为EF:
Tab1.Where(t => t.id1 == 123).OrderByDescending(t => t.id).FirstOrDefault();
我认为最简单的方法可以是这样:
Select * from Tab1 Where id1=123 AND id = (SELECT First(Max(id)) from Tab1 where id1 = 123)
可以删除First
如果值是不同的(我不知道如何Max
的行为,如果有具有相同最大值多行)
关于Linq
你可以用类似于:
Tab1.Where(t => t.id == 123).OrderByDescending(t => t.id).FirstOrDefault();
是的,您的解决方案更好,+1 –
谢谢。分选解决方案的性能如何? – KentZhou
如果您在id列上有索引,则性能完全可以忽略不计。如果它是主键,则可能已经为您创建。 – Sethcran