問題陳述
如何有效地擷取最高/最低的記錄或由另一個群組定義的每個群組中特定欄位的最低值欄位?
使用左外連接的解決方案
要檢索每個 GroupId 中 OrderField 欄位具有最高值的記錄,請使用以下查詢:
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;
加入的好處方法
替代方案
如果資料很小或您正在使用的資料庫引擎的特定實作對於連線最佳化不佳,您可以考慮諸如as:使用@Rank的方法效率低下變數
您使用@Rank 變數所描述的方法(如最初編寫的)將無法正常運作,因為@Rank 變數在處理第一個表格後不會重設為零。要解決此問題,您需要新增另一個衍生表,以在處理第二個表之前將 @Rank 重設為零。然而,與 join 方法相比,這種方法仍然效率低。以上是如何有效率地檢索資料庫中每組的最高或最低記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!