【发布时间】:2018-09-02 00:14:40
【问题描述】:
我在数据库 mysql (5.7.21) 中有一个表,如下所示:
+----------+--------------+-----------+----------- + | id_price | id_reference |价格_美元 | unix_time | +----------+--------------+-----------+----------- +我需要提取按年份或月份 (unix_time) 分组的平均价格 (price_usd)。
我准备了这个查询:
SELECT CONCAT(WEEKOFYEAR(FROM_UNIXTIME(unix_time)),
'-',
YEAR(FROM_UNIXTIME(unix_time))) as date,
AVG(price_usd) AS "model"
FROM price_avg
INNER JOIN reference ON reference.id_reference=price_avg.id_reference
WHERE price_avg.id_reference=1
GROUP BY WEEKOFYEAR(FROM_UNIXTIME(unix_time)),
YEAR(FROM_UNIXTIME(unix_time)),
price_avg.id_reference
ORDER BY unix_time ASC
内部连接对于获取具有 id 的产品的名称很有用。
我收到此错误:
#1055 - SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且 包含非聚合列 'name_of_db.price_avg.unix_time' 功能上依赖于 GROUP BY 子句中的列;这是 与 sql_mode=only_full_group_by 不兼容
我无法更改 MySQL 的设置(我无法禁用 ONLY_FULL_GROUP_BY 模式或其他任何东西)。
如何更改查询以在 MySQL 5.7.21 中提取数据?
提前致谢。
【问题讨论】:
-
我认为您的意思是 group_concat 但由于您不显示任何数据,我们无法确定。
-
不,我不是说 group_concat。看看anonyXmous的回复
标签: mysql group-by sql-order-by concat