首頁 >資料庫 >mysql教程 >MySQL從多個表中選擇時如何消除重複行?

MySQL從多個表中選擇時如何消除重複行?

DDD
DDD原創
2024-12-18 03:38:09439瀏覽

How to Eliminate Duplicate Rows When Selecting from Multiple Tables in MySQL?

從多個表中選擇並在MySQL 中處理重複

從多個表中進行選擇時,由於連結列中的值匹配,經常會遇到重複行。在這種情況下,您可能需要消除這些重複項,同時保留特定資訊。

問題陳述:

以下查詢從「drinks」和「drinks_photos」擷取資訊"表格:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id

但是,對於每種飲料,會出現多個照片條目,從而導致重複的行。所有照片的唯一行。 >解:

要解決此問題,為了保持資料完整性,我們可以在查詢中使用分組和聚合函數。 🎜>

GROUP BY:

將指定列中具有相同值的行進行分組。 COUNT、MAX、MIN)以檢索單一行

在這種情況下,我們可以按「drinks_id」欄位分組,以獲得每種飲料的唯一行。
    SQL 查詢:
  • 要為每種飲料獲取單行並保留所有照片條目,我們可以使用以下命令query:
  • GROUP_CONCAT:
將指定列中的值連接成單一字串,並以指定的分隔符號分隔(在本例中為逗號)。此查詢傳回以下結果:

說明:

每種飲料現在只有一杯行。 🎜>註:
SELECT name, price, GROUP_CONCAT(photo SEPARATOR ',') AS all_photos
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
  • GROUP_CONCAT 不是標準化的SQL聚合函數,其行為可能因資料庫而異
  • 如果遇到照片檔案名稱中包含逗號的情況,您可能需要考慮其他方法,例如修改表結構或在客戶端使用自訂函數來拆分連接的字串。

以上是MySQL從多個表中選擇時如何消除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn