为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 GROUP_CONCAT MySQL 选择中有条件分隔符

如何在 GROUP_CONCAT MySQL 选择中有条件分隔符

PHP
汪汪一只猫 2022-06-17 17:23:43
我不知道这是否可以做到。在我的 MySQL 代码中,我的选择之一是:GROUP_CONCAT(timestamp SEPARATOR '~') AS times我想做的是测试时间戳在日期/小时/分钟级别是否相等,以及是否用 a<br> 而不是波浪号替换 SEPARATOR。有没有办法在 MySQL 中做到这一点?如果不是,我将如何在 PHP 中进行操作?最终结果需要是两个(或更多)时间戳组成一个字符串,它将在表格单元格中使用。如果日期/小时/分钟相等,那么两者都将在同一个单元格中。如果它有助于时间戳几乎肯定会在表中是连续的。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您通常会使用两个级别的聚合来做到这一点。首先按分钟聚合并group_concat使用<br>分隔符,然后再次使用~分隔符聚合生成的字符串。


假设一个名为mytable时间戳列的表称为mytimestamp,您将执行以下操作:


select group_concat(gc0 order by myminute separator '~') gc1

from (

    select 

        date_format(mytimestamp, '%Y-%m-%d %H:%i') myminute,

        group_concat(mytimestamp order by mytimestamp separator '<br>') gc0

    from mytable

    group by myminute

) t

DB Fiddle 上的演示:


样本数据:


| 我的时间戳 |

| :------------------ |

| 2019-01-01 00:00:00 |

| 2019-01-01 00:00:01 |

| 2019-01-01 00:00:10 |

| 2019-01-01 00:01:00 |

| 2019-01-02 14:10:00 |

| 2019-01-02 14:10:30 |

查询结果:


| gc1 |

| :------------------------------------------------------------------------------------------------------------------------------- |

| 2019-01-01 00:00:00<br>2019-01-01 00:00:01<br>2019-01-01 00:00:10~2019-01-01 00:01:00~2019- 01-02 14:10:00<br>2019-01-02 14:10:30 |



查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信