假設我有幾百萬的記錄表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