mysql - 带有逗号分隔值的 sql 查询

标签 mysql

嗨,我的 table 上有这样的值

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 

提前致谢

最佳答案

尝试这样的事情:

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

关于mysql - 带有逗号分隔值的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158389/

相关文章:

php - 我不断收到无效参数编号 : number or bound variables does not math number of tokens in yii2

mysql - 使用条件,根据是否使用 SUM,我会得到不同的结果

mysql - 使用 phpexcel 将 csv 文件导入 mysql,但前导零被删除

mysql - 如何生成随机 unix 时间戳 mysql

php - 如何设置它以便不必上传表单中的文件即可将表单的其余数据插入 mysql 数据库?

mysql - 错误: 1005 Can't add foreign key (errno:121 Duplate key on write or update)

php - 如何在提交之前预先检查不同 sql 表中的表单值 - symfony

mysql - 搜索两个不同数据库之间的共同值

php - 插入带有重音符号和 latin1 字符

php - 项目不会从数据库中删除