首頁 > 資料庫 > mysql教程 > 在 SQL SELECT 語句中連接多個表格時如何避免重複行?

在 SQL SELECT 語句中連接多個表格時如何避免重複行?

DDD
發布: 2024-12-05 21:19:14
原創
920 人瀏覽過

How Can I Avoid Duplicate Rows When Joining Multiple Tables in SQL SELECT Statements?

避免多表SELECT 語句中的重複結果:綜合指南

執行連接多個表中資料的SELECT 語句時,可能會遇到重複的行,如下所示在提供的場景中:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
登入後複製

此查詢檢索飲料的5 行,其中照片是唯一唯一的場地。然而,名稱和價格重複,導致像“fanta”這樣的飲料出現重複行。

解決方案:分組和聚合函數

要消除這些重複,您需要利用分組和聚合功能。分組可讓您根據共同值組合行,而聚合函數使您能夠為每個群組提取特定值。

按飲料分組

如果您希望每種飲料單獨一行,無論與之關聯的照片有多少,您都可以按Drinks_id 進行分組:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
登入後複製

此查詢將return:

name price photo
fanta 5 ./images/fanta-1.jpg
dew 4 ./images/dew-1.jpg

使用GROUP_CONCAT連接照片

如果您希望每種飲料都有一組照片,MySQL 提供了GROUP_CONCAT 函數,該函數可以連接同一組中的值:

SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
登入後複製

此查詢將yield:

name price photo
fanta 5 ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg
dew 4 ./images/dew-1.jpg,./images/dew-2.jpg

注意事項

請注意,應謹慎使用GROUP_CONCAT,因為如果連接的值包含逗號,它可能會導致資料庫效能問題或傳回過大的字串。

以上是在 SQL SELECT 語句中連接多個表格時如何避免重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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