【问题标题】:SQL Merge two rows with same ID but different column valuesSQL合并两行具有相同ID但不同列值
【发布时间】:2019-10-22 14:44:20
【问题描述】:

当不同的行具有相同的 id 但不同的列值时,我试图将它们合并为一个。

    (table1)

    id       colour

    1        red
    1        blue
    2        green
    2        red

我希望将其组合起来,结果是:

    id     colour1    colour2

    1      red        blue
    2      green      red

颜色数量没有限制。它的范围取决于 id。

任何帮助将不胜感激!提前致谢。

【问题讨论】:

  • 为什么 colour1 = red 和 colour2 = blue 而不是相反? SQL 表/结果集由 ANSI SQL 定义 orderless
  • .. 同样对于当前数据集,您也不可能需要id |colour|position -> 1|red|1, 1|blue|2 ....
  • 我的错误。顺序可以是任何东西。
  • MySQL dynamic pivot table的可能重复

标签: mysql mariadb


【解决方案1】:

这适用于您的具体示例

select left(colours,locate(',',colours)-1) as colour1 , right(colours, length(colours)- locate(',',colours)) as colour2 from (select id, group_concat(colour) as colours from table1 group by id) concatenation

不是很通用或健壮。

如果一组值(颜色)是固定的,我更愿意像这样旋转它:

select id, sum(RED) as RED , sum(GREEN) as GREEN , sum(BLUE) as BLUE from (select id , colour='red' as RED , colour='green' as GREEN , colour='blue' as BLUE from table1) coded group by id;

但这不是您要求的输出格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多