我搜索了很多,但沒有找到適合我的問題的解決方案。SQL GROUP_CONCAT分爲不同的列
我想要做什麼?
我在MySQL 2個表: - 國家 - 外幣 (我通過CountryCurrency將它們連接在一起 - >由於多對多的關係)
的工作示例,請參見本:http://sqlfiddle.com/#!2/317d3/8/0
我想使用連接將兩個錶鏈接在一起,但我想在每個國家/地區只顯示一行(某些國家/地區有多種貨幣,所以這是第一個問題)。
我發現GROUP_CONCAT功能:
SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currency
FROM country
INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
GROUP BY country.name
這有以下結果:
NAME ISOCODE_2 CURRENCY
Afghanistan AF Afghani
Åland Islands AX Euro
Albania AL Lek
Algeria DZ Algerian Dinar
American Samoa AS US Dollar,Kwanza,East Caribbean Dollar
但我現在想就是分裂不同列中的貨幣(貨幣1,貨幣2, ...)。我已經嘗試過像MAKE_SET()這樣的函數,但這不起作用。
SQL不支持動態數量的列。您將不得不在應用程序中執行此操作。 – Vatev
您可以使用光標中的邏輯來執行此操作。但遊標首先必須查看結果集需要多少列數據。動態地創建一個臨時表來填充和稍後選擇。動態的列數是這個挑戰的問題。 –