gpt4 book ai didi

sql - postgres 列别名问题

转载 作者:IT老高 更新时间:2023-10-29 00:19:37 24 4
gpt4 key购买 nike

作为 Postgresql 的新手(我要搬家是因为我要将我的网站转移到只支持它的 heroku,我不得不重构我的一些查询和代码。这是一个我不太能解决的问题理解问题:

PGError: ERROR:  column "l_user_id" does not exist
LINE 1: ...t_id where l.user_id = 8 order by l2.geopoint_id, l_user_id ...
^

...查询:

   select distinct 
l2.*,
l.user_id as l_user_id,
l.geopoint_id as l_geopoint_id
from locations l
left join locations l2 on l.geopoint_id = l2.geopoint_id
where l.user_id = 8
order by l2.geopoint_id, l_user_id = l2.user_id desc

添加了子句“l.user_id as l_user_id, l.geopoint_id as l_geopoint_id”,因为显然 postgres 不喜欢未选择字段的 order 子句。但是我现在得到的错误使它看起来我也没有得到别名。有 postgres 经验的人看到这个问题吗?

我可能会遇到很多这样的问题——查询在 mySql 中运行良好...

最佳答案

在 PostgreSQL 中,您不能使用带有别名的表达式按顺序排列。只有普通别名在那里工作。您的查询应如下所示:

   select distinct 
l2.*,
l.user_id as l_user_id,
l.geopoint_id as l_geopoint_id
from locations l
left join locations l2 on l.geopoint_id = l2.geopoint_id
where l.user_id = 8
order by l2.geopoint_id, l.user_id = l2.user_id desc;

我假设你的意思是 l2.user_id=l.user_id 应该先走。

This is relevant message在 PostgreSQL 通用邮件列表上。以下是在documentation of ORDER BY clause :

Each expression can be the name or ordinal number of an output column (SELECT list item), or it can be an arbitrary expression formed from input-column values.

所以在使用表达式时没有别名。

关于sql - postgres 列别名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1645607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com