首頁 > 資料庫 > mysql教程 > 在 MySQL 中對多個資料表使用 SELECT DISTINCT 時如何處理重複行?

在 MySQL 中對多個資料表使用 SELECT DISTINCT 時如何處理重複行?

DDD
發布: 2024-12-08 19:17:10
原創
461 人瀏覽過

How to Handle Duplicate Rows When Using SELECT DISTINCT with Multiple Tables in MySQL?

在MySQL 中對多個表進行SELECT DISTINCT

在MySQL 查詢中,您在Drinks 和Drinks_s 表之間使用隱式photos 表之間使用隱式photo聯接,而無需WHERE 子句中的任何條件。這會產生笛卡爾積,產生 5 行,其中包含重複的名稱和價格值。若要消除這些重複項,您可以使用 SELECT DISTINCT 子句。

但是,如果您想要保留每種飲料的所有照片,則不能簡單地使用 SELECT DISTINCT,因為它只會傳回不同的行。相反,您需要使用分組和聚合函數的組合。

分組和聚合函數

分組依照指定的資料列聚合行。在本例中,您希望按 Drinks_id 對結果進行分組,以獲得每種飲料一行。然後,您可以使用聚合函數為每個分組結果選擇所需的值。

例如,要檢索每種飲料的第一張照片,您可以使用:

SELECT name, price, MIN(photo) AS photo
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
登入後複製

MIN ()聚合函數傳回每個照片列的最小值

GROUP_CONCAT

或者,如果您想將每種飲料的所有照片連接到字串中,您可以使用GROUP_CONCAT() 函數:

SELECT name, price, GROUP_CONCAT(photo, ',') AS photos
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
登入後複製

但請注意,GROUP_CONCAT() 不是標準SQL聚合不同資料庫的函數及其使用可能有所不同。

以上是在 MySQL 中對多個資料表使用 SELECT DISTINCT 時如何處理重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板