我正在尝试使用 MySQL 查询构建月份图形。我正在使用 UNION 命令在单个查询中检查每个月表中有多少行。下面以 3 个月为例:
$query =
"SELECT IFNULL((SELECT SUM(score) FROM statistics WHERE MONTH(date) = 1), 0) AS total UNION
SELECT IFNULL((SELECT SUM(score) FROM statistics WHERE MONTH(date) = 2), 0) AS total UNION
SELECT IFNULL((SELECT SUM(score) FROM statistics WHERE MONTH(date) = 3), 0) AS total";
$stats_query = mysqli_query ($db_connection, $query);
$result = "";
while ($row = mysqli_fetch_assoc($stats_query)) {
$result .= $row['total'].",";
}
echo ($result);
// OUTPUT: 0,176,68,
如您所见,我告诉 mysql 返回一个“0”,以防该月没有行(一月份就是这种情况)。
该查询中共有 12 个 SELECTS(我只复制了 3 个以节省空间),每个月一个。有些月份会返回一个值,有些则不会(然后 IFNULL 应该将其转换为“0”)。在这 12 个月中,我的最终输出应如下所示:
// OUTPUT: 0,176,68,0,0,0,0,0,12,15,176,43,
但是...如果有多个 SELECT 不返回任何行,则查询不会在结果中添加另一个“0”。我的最终结果是这样的:
// OUTPUT: 0,176,68,12,15,176,43,
就像 IFNULL 只执行一次,即使他出现在所有 12 个 SELECTS 中......
难道我做错了什么?任何人都可以在我的代码或其他内容中发现错误吗?
谢谢!