我在使用 ONLY_FULL_GROUP_BY 模式时遇到了麻烦(我不想,但是我不得不这样做)。 问题是这需要我在group by子句中包括一列。这是我需要选择的列(这是时间戳列),但需要按“日,月和年”分组。 像这样:
SELECT COUNT(id) AS howmuch, date_event
FROM mytable AS st
WHERE date_event BETWEEN SUBDATE(CURDATE(), 7) AND NOW()
GROUP BY DAY(date_event), MONTH(date_event), YEAR(date_event)
ORDER BY date_event
但这会引发错误:
'mydb.st.date_event' isn't in GROUP BY
因为date_event不在GROUP BY中,因为它不能。 如果我将date_event添加到分组依据,查询将起作用,但是从逻辑上讲,它不会返回我想要的内容(我需要知道该数据库表中有多少项(按天分组)。
有人提示如何实现这一目标吗?
谢谢!
答案 0 :(得分:1)
从定义上讲,一天不是独立的抽象,而是一个月和一年的时间。因此,您可以在查询中选择日期,月份和年份:
<a class="button" href="#"><span>Text</span></a>
但是我们可以通过按SELECT
DAY(date_event),
MONTH(date_event),
YEAR(date_event),
COUNT(id) AS howmuch
FROM mytable
WHERE date_event BETWEEN SUBDATE(CURDATE(), 7) AND NOW()
GROUP BY DAY(date_event), MONTH(date_event), YEAR(date_event)
ORDER BY YEAR(date_event), MONTH(date_event), DAY(date_event);
进行分组来使其更加简洁:
DATE(date_event)