"用户"名称作为表的别名不起作用



所以我用Postgres:编写了这个简单的查询

SELECT cp.contest_id, cp.username, user.rating FROM contest_participants cp 
JOIN users user ON user.username = cp.username WHERE contest_id = '?';

我一直得到这个错误:

ERROR:  syntax error at or near "."
LINE 1: SELECT cp.contest_id, cp.username, user.rating FROM contest_...

如果我更改user表的别名,它就像一个魅力,但让我不知道为什么会这样。别名有问题吗?或者数据库中的整个架构结构可能有其他问题?

据我所知,查询与我所做的选择是孤立的,对吧?

在Postgres SQL中,user是一个保留关键字,不能用作别名或其他数据库对象名称,请参阅此处的文档。

为了立即修复,您可以用双引号转义别名:

SELECT cp.contest_id, cp.username, user.rating
FROM contest_participants cp 
JOIN users "user" ON "user".username = cp.username
WHERE contest_id = '?';

或者,您可以只使用像usr这样的别名,它可以在不需要转义的情况下获得相同的含义。

相关内容

  • 没有找到相关文章

最新更新