我正在尝试对查询结果进行分组。我正在执行查询的表包含两个字段piste_name和lift_name都构成表的复合键。
这是我收到的错误消息:
错误:列“lift_location.piste_name”必须出现在GROUP BY子句中或用于聚合函数
我正在尝试的查询是:
SELECT piste_name, lift_name FROM lift_location
GROUP BY lift_location.lift_name;
和
SELECT piste_name, lift_name FROM lift_location
GROUP BY lift_name;
我认为问题出现了,因为piste_name也是复合键的一部分,所以它需要成为分组的一部分,但是有解决方法吗?
我希望我的查询返回piste_names并提升访问权限,但我希望它们以升降机的形式显示,而不是选择piste_names然后列表。
目前,我有:
piste_name | lift_name
--------------------------------
piste 1 | lift x
piste 1 | lift y
piste 2 | lift x
piste 2 | lift z
我希望我的查询以这种格式显示:
lift_name | piste_name
--------------------------------
lift x | piste 1
lift x | piste 2
lift y | piste 1
lift z | piste 2
我该怎么做?
答案 0 :(得分:3)
我认为你搞砸了你的结果的分组和排序。
SELECT lift_name, piste_name FROM lift_location ORDER BY lift_name, piste_name
这可以提供您想要的结果。那么为什么分组?
答案 1 :(得分:1)
是不是
SELECT lift_name, piste_name
FROM lift_location
GROUP BY lift_name, piste_name
ORDER BY lift_name, piste_name;