【发布时间】:2020-08-05 13:06:50
【问题描述】:
在 Postgres 12 中,我试图在 recipes 表上执行 SELECT,只带来一个图像(文件)。但是,在没有GROUP BY 的情况下执行查询时,我会根据其图像(文件)的数量得到重复的食谱。尝试使用GROUP BY 时,出现以下错误:
列“f.path”必须出现在 GROUP BY 子句中或用于聚合函数中
我正在运行的查询是:
SELECT r.id, r.title, c.name AS chef_name, f.path
FROM recipes AS r
LEFT JOIN chefs AS c ON (r.chef_id = c.id)
LEFT JOIN recipe_files AS rf ON (rf.recipe_id = r.id)
LEFT JOIN files AS f ON (rf.file_id = f.id)
GROUP BY r.id, c.id
ORDER BY r.title ASC
如果我将f.path添加到GROUP BY,我回到最初的问题,根据图像(文件)的数量接收带有重复项目的列表。
【问题讨论】:
-
将第一行更改为
SELECT r.id, max(r.title), max(c.name) AS chef_name, max(f.path)可以解决直接错误,但我怀疑问题出在其他地方。请添加几行示例数据和预期的结果。 -
那么如果一个菜谱有多个文件,那么你想看哪一个?
标签: sql postgresql group-by