sql - 别名后的外连接中不存在该列

标签 sql postgresql sequelize.js

我对下一个 SQL 查询(由 sequelize ORM 生成)有问题:

SELECT 
    "Publication".*, 
    "user"."id" AS "user.id"
FROM 
    (SELECT "Publication"."club_id" AS "clubId", "Publication"."user_id" AS "userId" FROM "publication" AS "Publication" WHERE ("Publication"."club_id" = '1')) AS "Publication" 
    LEFT OUTER JOIN "user_account" AS "user" ON "Publication"."user_id" = "user"."id";

产生的错误是:

ERROR: column Publication.user_id does not exist

LINE 6: LEFT OUTER JOIN "user_account" AS "user" ON "Publication"."... ^

我对正在发生的事情的直觉是 "Publication"."user_id" 被别名为 userId。然后,查询被别名为 "Publication"(覆盖之前引用该表的标签)。左外连接尝试将新的 Publication user_id 属性与 user.id 匹配,但无法匹配,因为现在它被称为 userId.

我是否正确理解了问题?

最佳答案

ERROR: column Publication.user_id does not exist

答案很简单 user_id <> userId:

SELECT "Publication".*, 
       "user"."id" AS "user.id"
FROM 
    (SELECT "Publication"."club_id"  AS "clubId"
            ,"Publication"."user_id" AS "userId" 
      FROM "publication" AS "Publication" 
     WHERE "Publication"."club_id" = '1') AS "Publication" 
LEFT JOIN "user_account" AS "user" 
  ON "Publication"."userId" = "user"."id";
                    -- here use column's alias

关于sql - 别名后的外连接中不存在该列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078579/

相关文章:

sql - SSIS - 跳过丢失的文件

sql - 如何插入记录并确保整行是唯一的

sql - 最大非空列

postgresql - 查找按关联排序的最后 n 个条目

node.js - Sequelize : isNewRecord is always false

sql - 为什么我的 SQL 占位符没有被替换(使用 Go pq)?

sql - 如何在函数内部调用函数

postgresql - 如何设计用于导航具有菱形结构的分层区域的表

sequelize.js - 在 sequelize 中一次同步多个表

node.js - 使用随时间变化的模型为 Sequelize 制作可重复的迁移字符串?