【问题标题】:how to split one row to many based on a comma separate column如何根据逗号分隔列将一行拆分为多行
【发布时间】:2020-04-23 23:00:32
【问题描述】:

这是我在 mysql 表中的数据:

name    childid
city    11,12,13
maintain    21,22,29
pool    33,39,100

我想获取以下格式的数据。所以我可以用它来加入另一个表。

11    city
12    city
13    city
21    maintain
22    maintain
29    maintain
33    pool
39    pool
100   pool

【问题讨论】:

  • 我会运行 jdbc/pdo/whatever 查询“select * from table”,使用 explode() 函数并将其循环/插入到新表中。
  • 永远不要再这样存储数据了!
  • 虽然您可能可以在 MySQL 中执行此操作,但我建议您使用 Python/Ruby/PHP 或任何您的服务器脚本语言。
  • 不要问类似的问题,这些问题已经存在于 stackoverflow 中,请大家上网......这里是链接.. stackoverflow.com/questions/14811316/…

标签: mysql sql


【解决方案1】:

这是一种非常糟糕的格式,毫无疑问 cmets 和其他答案会告诉你。你想要一个联结表——这也许就是你想要这个查询的原因。

最简单的方法是,如果您有一个包含所有有效子 ID 的表。然后你可以这样做:

select c.id, d.name
from mydata d join
     children c
     on find_in_set(c.id, childid) > 0;

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多