我想拆分我的表列数据,如下所示。
原始表
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 :(得分:0)
如果您的表名为metas
,则此查询将执行您想要的操作。
select m2.id, m1.id, m1.title
from metas m1
inner join metas m2
on find_in_set(m1.id, m2.meta);
通常情况下,find_in_set()
围绕设计不佳的桌子(这当然是这样)有点拐杖,但至少你会将它用于整体利益!