如何使用mysql拆分列?

时间:2015-05-25 09:00:44

标签: 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

1 个答案:

答案 0 :(得分: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()围绕设计不佳的桌子(这当然是这样)有点拐杖,但至少你会将它用于整体利益!