無法在MySQL 查詢中選擇所有具有DISTINCT 的欄位
嘗試使用DISTINCT 關鍵字消除重複行時,使用者可能會遇到以下限制:選擇MySQL 查詢中的所有欄位。本文解決了該問題並提供了解決方案。
背景
DISTINCT 關鍵字根據指定的列標識並僅傳回結果集中唯一的行)。但是,與全選語句 (*) 結合使用時可能會導致錯誤。
考慮以下查詢,該查詢僅選擇 temp_tickets 表中的 Ticket_id 列並按 Ticket_id 對其進行排序:
mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
此查詢將成功執行並傳回不同的 Ticket_id 值。但是,以下查詢嘗試選擇所有欄位並使用 DISTINCT:
mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
將導致錯誤。這是因為 DISTINCT 只能應用於單一欄位。
解決方案
要選擇所有欄位並使用DISTINCT 消除重複,請修改查詢如下:
SELECT ticket_id, <other_field>, <other_field> FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id
在此查詢中,GRO BY 子句與DISTINCT 結合使用,依Ticket_id 欄位將結果分組。對於每個唯一的ticket_id,只會傳回一行,其中包含指定欄位的最新值。
以上是如何在MySQL中選擇所有具有DISTINCT的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!