gpt4 book ai didi

php - 有没有办法在 MySQL 结果集中生成 "fake"行?

转载 作者:可可西里 更新时间:2023-11-01 07:05:32 24 4
gpt4 key购买 nike

我需要这个来制作图表。基本上我必须:

  1. 按日期选择所有发送的 SMS,不带时间部分,得到一个数组,其中包含每天的日期/计数对;
  2. 为我的表中没有任何记录的日子添加“假”行,即用零填充所有日期“空白”。

示例结果和相应的表格(此处简化)为:

array(
'2012-05-26 00:00:00' => 1,
'2012-05-27 00:00:00' => 0, // Fake added row
'2012-05-28 00:00:00' => 2,
)

+----------------+----------------------+
| Table SMS | id | sent_at |
+----------------+----------------------+
| | 1 | 2012-05-26 21:58:41 |
+----------------+----------------------+
| | 2 | 2012-05-28 22:19:21 |
+----------------+----------------------+
| | 3 | 2012-05-28 02:19:21 |
+----------------+----------------------+

是否有执行此操作的任何 SQL 命令,或者我应该手动使用 PHP 数组?

最佳答案

您可以使用 UNION 语句

SELECT 
sent_at,
Count(*)
FROM (Select
id,
DATE(sent_at) as sent_at
FROM TableName
Group by Date(sent_at)
UNION ALL
Select
'0' as id,
DATE('2012-05-27') as sent_at) derived_table
Group By sent_at

已编辑

我建议创建一个特殊的表来加入。

创建用于查询的日期表

CREATE TABLE DateTable (
DateValue DateTime,
Year Int,
Month Int,
Day Int)

现在用您正在查询的范围内的所有日期值填充此表。您可以使用任何有效日期轻松加入此表。允许您汇总存在和不存在的日期。

关于php - 有没有办法在 MySQL 结果集中生成 "fake"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com