【发布时间】:2014-02-12 18:14:45
【问题描述】:
我非常熟悉 MySQL 语法,但在迁移到 PostgreSQL 环境时似乎遇到了一些成长的烦恼。在 MySQL 中,您可以轻松引用连接子查询中的列,但在 PostgreSQL 中我会出错。
例如:
SELECT
a.userID,
b.firstname,
c.minCounter
FROM users a
JOIN users_info b ON (a.userID = b.userID)
LEFT JOIN (
SELECT
user_id,
COUNT(*) AS 'minCounter'
FROM sales
WHERE
total_amount > 500
GROUP BY user_id
) as c ON (b.userID = c.user_id)
引用子查询“c”及其临时列“minCounter”没有问题。然而,在 PostgreSQL 中,类似的查询会返回错误:
ERROR: syntax error at or near "'minCounter'"
LINE 10: COUNT(*) AS 'minCounter'
考虑文字列与命名列
如果我将第 10 行切换为状态:COUNT(*) AS "minCounter"
我的错误只是调整为:
ERROR: column c.mincounter does not exist
LINE 4: c.minCounter
关于我缺少什么语法或一般命名差异的任何建议?
(注意,我不确定我们运行的是哪个版本的 PostgreSQL,因为它被我们的外部开发团队混淆了)。
谢谢!
【问题讨论】:
标签: postgresql