所以我用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
这样的别名,它可以在不需要转义的情况下获得相同的含义。