SQL查詢中如何選擇具有最小值的唯一行?
在資料庫中,經常需要提取特定列包含最小值的記錄。假設一個表格包含列'id'、'game'和'point'。若要選擇具有最小'point'值的唯一行(按'game'分組),可以使用以下有效的SQL查詢:
<code class="language-sql">SELECT tbl.* FROM TableName tbl INNER JOIN ( SELECT Id, MIN(Point) MinPoint FROM TableName GROUP BY Id ) tbl1 ON tbl1.id = tbl.id WHERE tbl1.MinPoint = tbl.Point</code>
此查詢確保只選擇每個唯一'id'的最小'point'值的行。括號內的子查詢計算每個'id'的最小'point'值,並將其儲存在臨時列'MinPoint'中。然後,主查詢根據公共列'id'將原始表('TableName')與這個臨時表連接。
透過篩選條件'tbl1.MinPoint = tbl.Point',查詢確保只傳回'point'值與每個'id'群組內的最小值相符的行。這將產生所需的輸出,其中為每個'game'選擇具有最小'point'值的唯一行。
範例:
考慮以下表格:
id | game | point |
---|---|---|
1 | x | 5 |
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
3 | y | 5 |
3 | z | 8 |
在該表上執行上述查詢將產生以下輸出:
id | game | point |
---|---|---|
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
如您所見,該查詢正確地識別了每個'game'的最小'point'值的唯一行。
注意:原始範例資料與結果存在不一致,已修正結果表,使其與SQL語句結果相符。 修正後的結果表顯示了每個id
對應的最小point
值的行。如果需要依game
分組選擇最小point
值,則需要修改SQL語句。
以上是如何在SQL中選擇具有最小值的唯一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!