我正在尝试从MySQL数据库中获取一些用于PHP的数据。好像我应该能够让MySQL输出我需要的数字,而不必在事后用PHP计算它。
所以这就是我要做的。我想计算每个月的参赛人数。所以我有一个看起来像这样的数据库。
DateTimeOriginal
2004:11:06 09:58:31
2004:11:08 10:00:25
2004:12:28 12:00:45
2005:03:02 05:00:15
2005:03:15 23:12:10
我想写一个基本上输出这个的查询。
echo $row[0] . ":" . $row[1] . " = " . $row[2];
2004:11 = 2
2004:12 = 1
2005:03 = 2
我尝试了一些东西,看不到把我的大脑包裹起来。我对MySQL很陌生,但我知道有一些方法可以让MySQL做一些繁重的工作。
答案 0 :(得分:0)
您希望结果列($row[0]
等)为:
在这种情况下,这应该有效:
SELECT
YEAR(DateTimeOriginal) AS TheYear,
DATE_FORMAT(DateTimeOriginal, '%m') AS TheMonth
COUNT(*)
FROM myTable
GROUP BY
YEAR(DateTimeOriginal),
DATE_FORMAT(DateTimeOriginal, '%m')
ORDER BY TheYear, TheMonth
附录:如果两列正常(一列用于格式化的年/月,一列用于计数),则查询变得更加简单。
SELECT
DATE_FORMAT(DateTimeOriginal, '%m:%Y') AS YearMonth,
COUNT(*)
FROM myTable
GROUP BY DATE_FORMAT(DateTimeOriginal, '%m:%Y')
ORDER BY YearMonth
非常感谢@GordonLinoff指出这一点。这提醒人们,好的建议和好的代码一样重要!
答案 1 :(得分:0)
这应该这样做:
Select year(a.DateTimeOriginal) as theYear, month(a.DateTimeOriginal) as theMonth,count(b.subDate) as theCount
From table a
Inner Join (
Select SUBSTR(DateTimeOriginal,7) as subDate) b
On a.DateTimeOriginal = b.DateTimeOriginal