2013-05-22 139 views
1

我有表T1 SQL记录的Sql将一个记录插入到多条记录

user_id tags 
    1  <tag1><tag2> 
    1  <tag1><tag3> 
    2  <tag2><tag3> 

我想分这记录到多个记录,并做就可以是不同的。 我想知道如何根据标签<>记录划分到另一个表T2

我需要这样的输出中的表t2

user_id tags 
    1  <tag1> 
    1  <tag2> 
    1  <tag1> 
    1  <tag3> 
    2  <tag2> 
    2  <tag3> 

能跟大家能给我一些SQL查询办??

+0

标签是如何分离蛋白的?它在一列吗? – 0x1gene

+0

没有一列,用它的user_id将它们分成新的多个记录到另一个表中t2 –

+0

我指的是T1吗? – 0x1gene

回答

0

试试这个:

SELECT 
    user_id, 
    SUBSTRING_INDEX(tags,'<',2) as tag 
FROM 
    t1 
UNION ALL 
SELECT 
    user_id, 
    SUBSTRING_INDEX(tags,'>',-2) as tag 
FROM 
    t1 

更新:为不同的值,可以使用:

SELECT 
    user_id, 
    tag 
FROM (
    SELECT 
     user_id, 
     SUBSTRING_INDEX(tags,'<',2) as tag 
    FROM 
     t1 
    UNION ALL 
    SELECT 
     user_id, 
     SUBSTRING_INDEX(tags,'>',-2) as tag 
    FROM 
     t1 
) as tmp 
    GROUP BY 
     user_id, 
     tag 
+1

不要忘记使用'SELECT DISTINCT'来删除重复项,如果需要的话 –

+0

给出所需输出示例,不需要删除重复项,这就是为什么我没有使用'DISTINCT' – Stephan

+0

OP的问题说:“我想把这些记录分成多个记录,并做不同的记录。” –