MySQL:了解DISTINCT 選擇多列
處理MySQL 表中的重複行時,可以使用DISTINCT 關鍵字來擷取唯一的行值,但在選擇多個列時也會造成限制。本文解決了使用 DISTINCT 時檢索所有欄位的問題,以及為重複行選擇最新條目的解決方案。
DISTINCT 對多列的限制
DISTINCT 不是僅適用於特定列的函數。相反,它是一個影響選擇清單中所有列的查詢修飾符。它會刪除 所有 列的值相同的重複行。
DISTINCT 的正確語法
DISTINCT 必須立即出現在 SELECT 之後(以及其他查詢修飾符,例如 SQL_CALC_FOUND_ROWS)。在查詢修飾符後面,應列出列名稱。
例如:
<code class="sql">SELECT DISTINCT foo, ticket_id FROM table...</code>
此查詢將為 Ticket_id 和 foo 中每個不同的值對輸出一行。
選擇所有列的解決方案
選擇所有欄位並仍然使用 DISTINCT 是不可能的,因為它要求所有列都相同才能去除重複。但是,有一種解決方法可用於選擇重複行的最新項目:
<code class="sql">SELECT t1.* FROM table AS t1 JOIN ( SELECT ticket_id, MAX(row_id) AS max_id FROM table GROUP BY ticket_id ) AS t2 ON t1.ticket_id = t2.ticket_id AND t1.row_id = t2.max_id</code>
此查詢使用子查詢來尋找每個Ticket_id 的最大row_id,然後將主表與子查詢連接起來為每個ticket_id選擇最新行。
以上是如何在MySQL中選擇所有具有DISTINCT的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!