MySQL:利用GROUP_CONCAT 和LEFT JOIN 進行全面的資料擷取
最近使用MySQL 的「GROUP_CONCAT」函數的資料庫在加入時遇到問題多張桌子。預期結果是檢索票證清單及其對應的解決方案,但查詢傳回意外結果。
提供的 SELECT 語句嘗試使用 LEFT JOIN 檢索票證資訊以及串聯的解決方案字串「門票」和「解決方案」表。然而,結果並不令人滿意,查詢返回一行,其中包含第一張票證的詳細資訊以及兩張票證的解決方案。
要解決此問題,可以採用替代查詢,利用子查詢來執行 GROUP_CONCAT在「解決方案」表上進行操作。這是更新的查詢:
SELECT t.*, x.combinedsolutions FROM TICKETS t LEFT JOIN (SELECT s.ticket_id, GROUP_CONCAT(s.solution) AS combinedsolutions FROM SOLUTIONS s GROUP BY s.ticket_id) x ON x.ticket_id = t.ticket_id
在此查詢中,子查詢用於計算每張票證的串聯解決方案。然後使用 LEFT JOIN 將子查詢的結果連接到「Tickets」表。這可確保按預期返回每張票證及其相應的解決方案。
或者,以下查詢可以使用嵌套子查詢獲得相同的結果:
SELECT t.*, (SELECT GROUP_CONCAT(s.solution) FROM SOLUTIONS s WHERE s.ticket_id = t.ticket_id) AS combinedsolutions FROM TICKETS t
這兩個修改後的查詢成功返回所需的結果,提供完整的票證列表及其相關解決方案。
以上是如何在 MySQL 中使用 GROUP_CONCAT 和 LEFT JOIN 進行全面資料擷取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!