取得每組最高/最小值的記錄
問題:
問題:檢索記錄每個字段中給定欄位的最高或最小值
先前提出的解決方案:在帶有子查詢的複雜查詢中使用排名(@rank := @rank 1)。
替代解決方案:SELECT t1.* FROM `Table` AS t1 LEFT OUTER JOIN `Table` AS t2 ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField WHERE t2.GroupId IS NULL ORDER BY t1.OrderField;更有效的方法是利用左外不帶排名變數的連接:
此查詢透過利用(GroupId, OrderField) 上的索引策略來優化對t2 的訪問,從而達到預期結果。
AND (t1.OrderField < t2.OrderField OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id))多個最高/最小值:
要處理組內多個記錄具有相同最高/最小值的情況,請擴展條件如下:
以上是如何在SQL中有效率地檢索每組最高或最低值的記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!