2015-05-25 67 views
-1

我想分割我的表列數據如下。如何使用mysql拆分列?

原始表

ID parentID title meta 
24 -  E 
1 24  A 
2 25  B 
3 1  C 1,2,4 
4 2  D 1,2,3 

現在我想分割

ID meta title 
3 1  A 
3 2  B 
3 4  D 

這是我試過到目前爲止

SELECT tbl_sub.id, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(tbl_sub.metakey, ',', numbers.n), ',', -1) meta 
    FROM 
    (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers 
    INNER JOIN tbl_sub 
    ON CHAR_LENGTH(tbl_sub.metakey)-CHAR_LENGTH(REPLACE(tbl_sub.meta , ',', ''))>=numbers.n-1 
    where id=3 
    ORDER BY id, n 
+0

你有沒有可能的每個'meta'值的表? – eggyal

+0

@eggyal:即時將元值作爲ID的。例如:元值1,2是同一個表的ID。元值1是id 1其中匹配標題是A同樣 – jzon

+0

試試看:http://stackoverflow.com/a/22669310/1448311 –

回答

0

如果你的表稱爲metas,這個查詢會做你想要什麼。

select m2.id, m1.id, m1.title 
    from metas m1 
    inner join metas m2 
     on find_in_set(m1.id, m2.meta); 

demo here

通常find_in_set()有點柺杖的周圍設計不當表(這當然是這是什麼),但至少你使用它的總體不錯!

+0

它從我的作品。 – jzon

+0

是否可以放置另一個find_in_set? – jzon

+0

我已編輯你的小提琴。我想要的是另一種顏色來獲得ID的標題。例如:身份證24是父母身份證以及身份證,所以我想獲得與ID 24匹配的標題以及。請指教 – jzon