這邊文章寫得很詳細: MySQL 的 GROUP_CONCAT 函數
今天被 DISTINCT 整個很徹底,嚴格來說也不是整拉,因為我也沒用過,就求一個方便,希望把關聯的資料都 concat 進來,就不用一直撈其他的 table,哎,無力說明,很無奈 xdd。
不過我還是想留一下記錄,畢竟這個對我來說太常用了。
因為我不想在一個網頁上,一直額外的去 query 其他關聯的 table,所以我就想要把關聯的資料用同一隻 Query 就 Query 出來,但是關聯的表單,可能又是一對多,因此我就必須要 concat 那幾筆所有的資料為 Object 的格式(Object 格式只是為了方便我拆解資料而已.. ,也可以依照喜歡的字串去組合),然後就看到了 GROUP_CONCAT 這個功能。
這是我預期的結果:
這是 Query :
如果不是跟這麼多 select 一起處理的話,簡單的寫法大概是參考這個: Export MySQL to Json 。
寫法類似這樣,也是能夠得到類似的結果,只是沒有跟其他 table 做 join 而已。
結果是這樣 : (因為我前後有加 "[", "]",因此 output 結果會直接變成一個 object 的 Array)
大概是這樣...
這樣的結果還算滿意,至少有達到我要的結果,至於付出多少時間也就值了 T_T 。
今天被 DISTINCT 整個很徹底,嚴格來說也不是整拉,因為我也沒用過,就求一個方便,希望把關聯的資料都 concat 進來,就不用一直撈其他的 table,哎,無力說明,很無奈 xdd。
不過我還是想留一下記錄,畢竟這個對我來說太常用了。
因為我不想在一個網頁上,一直額外的去 query 其他關聯的 table,所以我就想要把關聯的資料用同一隻 Query 就 Query 出來,但是關聯的表單,可能又是一對多,因此我就必須要 concat 那幾筆所有的資料為 Object 的格式(Object 格式只是為了方便我拆解資料而已.. ,也可以依照喜歡的字串去組合),然後就看到了 GROUP_CONCAT 這個功能。
這是我預期的結果:
{ id:"11", title:"第一次,維多利亞港", slogan:"浪漫夜景一日遊" },
{ id:"12", title:"山頂纜車", slogan:"鳥瞰香港" },
{ id:"13", title:"一點心美食", slogan:"便宜又好吃" }",
{ id:"12", title:"山頂纜車", slogan:"鳥瞰香港" },
{ id:"13", title:"一點心美食", slogan:"便宜又好吃" }",
這是 Query :
SELECT
....
...
GROUP_CONCAT(
DISTINCT CONCAT(
'{id:"', titles.id, '", title:"',titles.title,'", slogan:"',titles.slogan,'"}'
)
ORDER BY titles.id ASC separator ', ' ) AS titles,
....
FROM XXX as XX
LEFT JOIN ....
WHERE ....
....
...
GROUP_CONCAT(
DISTINCT CONCAT(
'{id:"', titles.id, '", title:"',titles.title,'", slogan:"',titles.slogan,'"}'
)
ORDER BY titles.id ASC separator ', ' ) AS titles,
....
FROM XXX as XX
LEFT JOIN ....
WHERE ....
如果不是跟這麼多 select 一起處理的話,簡單的寫法大概是參考這個: Export MySQL to Json 。
寫法類似這樣,也是能夠得到類似的結果,只是沒有跟其他 table 做 join 而已。
SELECT
CONCAT("[",
GROUP_CONCAT(
CONCAT("{ \"id\": \" ", id , " \" "),
CONCAT(", \"title\": \" ", title), " \"}")
,"]")
AS json FROM `table_name` WHERE XXX = XXX;
CONCAT("[",
GROUP_CONCAT(
CONCAT("{ \"id\": \" ", id , " \" "),
CONCAT(", \"title\": \" ", title), " \"}")
,"]")
AS json FROM `table_name` WHERE XXX = XXX;
結果是這樣 : (因為我前後有加 "[", "]",因此 output 結果會直接變成一個 object 的 Array)
[
{ "id": " 11 " , "title": " 第一次,維多利亞港 "},
{ "id": " 12 " , "title": " 山頂纜車 "},
{ "id": " 13 " , "title": " 一點心美食 "}
]
{ "id": " 11 " , "title": " 第一次,維多利亞港 "},
{ "id": " 12 " , "title": " 山頂纜車 "},
{ "id": " 13 " , "title": " 一點心美食 "}
]
大概是這樣...
這樣的結果還算滿意,至少有達到我要的結果,至於付出多少時間也就值了 T_T 。
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD