微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

我有一个表“campaign_items”,其中包含列(预算,花费),我想使用公式计算剩余预算
剩余预算=预算 – 花费

现在我在查询下运行:

select distinct a.budget,a.spent 
from campaign_items a 
where campaign_item_id=12345 
order by a.budget-a.spent

但是我收到了错误

ERROR: for SELECT disTINCT,ORDER BY expressions must appear in select list

注意:我无法从查询删除disTINCT关键字,因为查询是使用JdbcTemplate生成

任何人都可以帮我解决这个错误吗?

解决方法

我认为错误的根本原因是您使用ORDER BY a.budget – a.spent进行排序,但此表达式不会出现在SELECT子句中.在下面的查询中,我使用包含计算列的子查询进行排序,但之后只选择预算和用过的列.

select t.budget,t.spent
from
(
    select distinct a.budget,a.spent,a.budget - a.spent as sort,from campaign_items a
    where campaign_item_id = 12345
) t
order by t.sort

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐