問題:
使用簡單的JOIN 從MySQL 中的多個表中的多個表格中選擇資料而不指定任何資料時條件下,由於每個匹配鍵連接了多行,因此可能會導致重複行。我們如何消除這些重複並檢索每種飲料的唯一行,包括所有關聯的照片?
解決方案:
要解決此問題,我們需要利用分組和聚合函數來合併重複的行並從中選擇所需的值。
首先,我們按 Drinks_id 對行進行分組,以便每行僅獲取一行Drink:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
此方法將為每種飲料返回一行,僅包含一張照片。要包含所有關聯的照片,我們可以使用GROUP_CONCAT 函數將照片檔案名稱連接成單一字串:
SELECT name, price, GROUP_CONCAT(photo, ',') FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
此查詢將產生一個表,其中包含唯一的飲料行和包含所有飲料的連接字串。每種飲料的照片檔案名稱。
請注意,GROUP_CONCAT 是 MySQL 特定的函數,其他資料庫系統可能不支援。在這種情況下,可能需要考慮替代方法,例如子查詢或陣列資料類型。
以上是MySQL連接多個表格時如何避免重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!