--
- GROUP_CONCAT - MariaDB Knowledge Base
- MySQL Group_CONCAT()用法及代碼示例
- MySQL把多个查询结果合并JSON
- Instant SQL Formatter (dpriver.com)
con JOIN org 資料表之後,想要帶 sale 對應的一對多銷售紀錄。根據需求可以都使用 JOIN 來連接,之後在用程式來處理顯示,不過這樣程式難寫,如果可以把銷售紀錄也變成一個欄位對應到紀錄就好了,這時就可以使用 GROUP_CONCAT()
1 2 3 4 5 6 7 8 9 |
SELECT a.*, GROUP_CONCAT(sale.name) AS name, GROUP_CONCAT(sale.price) AS price FROM `con` a INNER JOIN org b ON a.org_id = b.id WHERE a.xxx = '1' GROUP BY a.id ORDER BY a.id DESC |
這樣會查詢出 2 個欄位,必須自行使用 key 來定位,不想這麼麻煩的話可以整合成一個 JSON,像這樣
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT a.*, CONCAT('[', GROUP_CONCAT( CONCAT('{"name":"', sale.name, '",'), CONCAT('"price":"', sale.price, '"}') ), ']') AS detail FROM `con` a INNER JOIN org b ON a.org_id = b.id WHERE a.xxx = '1' GROUP BY a.id ORDER BY a.id DESC |
如此就可以消滅萬惡的多層 SELECT 資料庫查詢緩慢問題
--
525 total views, 2 views today