代码之家  ›  专栏  ›  技术社区  ›  forJ

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

  •  2
  • forJ  · 技术社区  · 6 年前

    我试图在下面运行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
    

    uf 在内部联接查询中,但必须联接并引用联接查询旁边最近查看的列。有办法克服吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Kamil Gosciminski    6 年前

    我认为你只要 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
    

    SELECT GROUP BY 列以获取所需的列。

        2
  •  0
  •   Laurenz Albe    6 年前

    INNER JOIN LATERAL 如果要引用以前的列 FROM 列出条目。