mysql - 具有可变列数的mysql查询
问题描述
我有一个看起来像这样的表结构:
id:Bigint(11)
channel_id:Bigint(11)
server_id:Bigint(11)
created:timestamp
我想得到一个表格,显示给定时间段内的条目数(每小时,所以从 00:00-00:59 和 01:00-01:59 等...)对于每个 channel_id 其中 server_id是 X(如果可能,也是所有 channel_id 的总数)。而且我还需要它来显示没有条目的时间段以及该时间段没有消息的channel_ids(所有channel_ids至少在数据集中一次)
我能想到的最好的事情是
SELECT
DATE_FORMAT(
MIN(created),
'%d/%m/%Y %H:00:00'
) AS tmstamp,
COUNT(*) AS cnt
FROM
messages
GROUP BY ROUND(UNIX_TIMESTAMP(created) / 3600)
我找不到关于可变列数的任何信息(因为我不知道给定的 server_id 有多少不同的 channel_id)
感谢您提前提供任何帮助。
编辑:删除了问题的时间段部分,但我的主要问题仍然存在。即使我事先不知道它们,我如何将 channel_ids 作为列。
解决方案
推荐阅读
- javascript - 正确绑定值以防止重复
- docker - Postgres 和 PgAdmin Docker Compose 静态 IP 连接错误
- sql-server - mssql 查询找不到包含字符 č 和 ć 的字符串
- php - 为什么所有 Prestashop 子文件夹中都有 index.php 和 .htaccess?
- javascript - Angular中数据源的迭代
- sql - 如何将具有非常大数据的 XML 放入 MS SQL 中的 varchar(MAX) 变量中
- pointers - 加速arduino的麻烦
- python - 如何解析一个属性?
- javascript - 如何在传单 CRS 中使用真实坐标
- mysql - 通过 MySQL Workbench 的“表数据导入向导”导入带有转义引号的 CSV 文件