sql - 如何在内部查询列中使用外部查询列

标签 sql postgresql

我正在尝试在下面运行 postgresql 查询

SELECT *
FROM user_follow uf
       INNER JOIN (SELECT uplr.post, COUNT(*)
                   FROM user_post_like_relation uplr
                   WHERE uplr.category = 'like' AND uf.recently_viewed < uplr.created_at . //CANNOT reference uf
                     AND clicked = true
                   GROUP BY uplr.post) uplr
    ON uplr.post = uf.post
INNER JOIN post p ON uf.post = p.id

不幸的是,我无法在 INNER JOIN 查询中引用 uf 但我必须加入并在 JOIN 查询中引用 recently_viewed 列。有没有办法克服这个问题?

最佳答案

我认为在您的情况下,只需JOIN 到表并GROUP 结果以执行COUNT 就足够了。

SELECT uf.post, p.id, count(*)
FROM user_follow uf
JOIN post p ON uf.post = p.id
JOIN user_post_like_relation uplr ON uplr.post = uf.post
WHERE uplr.category = 'like'
  AND clicked = 'true'
  AND uf.recently_viewed < uplr.created_at
GROUP BY uf.post, p.id

使用 SELECTGROUP BY 列来获取您需要的列。

关于sql - 如何在内部查询列中使用外部查询列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51837398/

相关文章:

sql - neo4j 中用于大型数据集的基于内容的 reco 系统

java - [Microsoft][ODBC 驱动程序管理器] 游标状态无效

postgresql - 找不到 Heroku postgres

sql - Postgres 触发器将许多列组合成一个 JSON 列

sql - 当一列可以为空时,如何在 2 列上设置唯一约束

sql - Sql Server 2008 View 中的 ORDER BY

mysql - SQL JOIN COUNT 然后在 where 子句中使用该计数值

postgresql - 索引行大小 2712 超过 btree 版本 4 索引的最大值 2704,同时进行数据库还原

ruby-on-rails - 我可以将 2 个不同表字段中的值相加并通过 Rails/Active Record 对该值进行排序吗?

mysql - 在 MySQL 中获取特定团队中的团队成员