带有逗号分隔值的SQL查询

时间:2016-05-11 09:28:03

标签: mysql

我的桌子上有这样的值

post_id  name
 1        a,b 
 2       a,b,d
 3       c,d

如何把它带到

post_id   name
  1         a
  1         b
  2         a
  2         b
  2         d
  3         c
  3         d 

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

SELECT
  post_id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(name, ',', n.digit+1), ',', -1) name
FROM
  mytable
INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(name, ',' , '')) <= LENGTH(name)-n.digit
ORDER BY
  post_id,
  n.digit

您可以将name字段上的最大连接数用于通过以下查询动态生成INNER JOIN子句:

select MAX(length(name) - length(replace(name, ',', ''))) as numOfConcate