第一:
SELECT MONTH(timestamp) AS d, COUNT(*) AS c
FROM table
WHERE YEAR(timestamp)=2012 AND Status = 1
GROUP BY MONTH(timestamp)
我面临的问题之一是我必须运行多个使用不同值的查询Status
。有没有办法将它们组合成一个?就像在一列中一样,它将包含 when 的所有计数Status=1
和另一列的 whenStatus=2
等。
第二个:
SELECT COUNT(*) c , MONTH(timestamp) t FROM
(
SELECT t.adminid, timestamp
FROM table1 t
LEFT JOIN admins a ON a.adminID=t.adminID
WHERE YEAR(timestamp)=2012
GROUP BY t.adminID, DATE(Timestamp)
ORDER BY timestamp DESC
) AS a
GROUP BY MONTH(timestamp)
ORDER BY MONTH(timestamp) ASC;
一个嵌套查询,不确定我是否可以对此进行改进。我在 2 张桌子上运行这个,一张有约 35k 行,一张有约 300k 行。第一张桌子大约需要半秒,第二张桌子大约需要4-5秒。