php - 如何在 GROUP_CONCAT MySQL 选择中有条件分隔符
问题描述
我不知道这是否可以做到。在我的 MySQL 代码中,我的选择之一是:
GROUP_CONCAT(timestamp SEPARATOR '~') AS times
我想做的是测试时间戳在日期/小时/分钟级别是否相等,以及是否用 a<br>
而不是波浪号替换 SEPARATOR。有没有办法在 MySQL 中做到这一点?如果不是,我将如何在 PHP 中进行操作?最终结果需要是两个(或更多)时间戳组成一个字符串,它将在表格单元格中使用。如果日期/小时/分钟相等,那么两者都将在同一个单元格中。如果它有助于时间戳几乎肯定会在表中是连续的。
解决方案
您通常会使用两个级别的聚合来做到这一点。首先按分钟聚合并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
样本数据:
| 我的时间戳 | | :----------------- | | 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 |
推荐阅读
- android - 如何在主要活动中调用插页式广告,然后在其他活动中调用它?
- reactjs - 升级 styled-componentsv4 时出现不变违规错误
- python - 在 JSON 中搜索变量,然后返回父标签的名称
- telegram - 如何使用 python 的 python-telegram-bot 库将 inlineKeyboardButton 替换为另一个 inlineKeyboardButton?
- c# - 游戏对象(聚光灯)未与 UI 画布 textField 交互/更改
- android - 相对布局内的滚动问题
- mongodb - 如何使用 spring-data-mongo 运行以下聚合查询?
- awk - 如何计算每个部分中的字母数量
- apache-flex - 删除部分字符串后,TextInput 无法再次捕获全部内容
- java - 一个 div 类包含 onlclick 元素如何在 selenium 中处理它