首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT *和SELECT COUNT(*)

SELECT *和SELECT COUNT(*)
EN

Stack Overflow用户
提问于 2020-02-25 03:42:03
回答 1查看 71关注 0票数 0

我的SQL查询如下所示

代码语言:javascript
复制
SELECT * 
FROM categories AS c
LEFT JOIN LATERAL (SELECT i.* 
                   FROM influencer_profiles AS i 
                   WHERE c.id = i.category_id
                   ORDER BY i.updated_at
                   LIMIT 2) AS i ON 1 = 1
INNER JOIN users AS u ON i.user_id = u.id

但我也想计算类别的每个influencer_profile,以显示每个类别中有多少个influencer_profile。如何在选择所有列的同时使用COUNT(*)

代码语言:javascript
复制
SELECT * 
FROM categories AS c
LEFT JOIN LATERAL (SELECT COUNT(*) 
                   FROM influencer_profiles AS i 
                   WHERE c.id = i.category_id
                   ORDER BY i.updated_at
                   LIMIT 2) AS i ON 1 = 1
INNER JOIN users AS u ON i.user_id = u.id

此代码不起作用。

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 03:44:50

也许你只是想要一个窗口函数。我注意到您在一个地方使用了left join,而inner join正在撤消它。

所以,我在想:

代码语言:javascript
复制
SELECT c.*, i.*, u.*,
       COUNT(*) OVER (PARTITION BY c.id) as category_cnt
FROM categories c LEFT JOIN LATERAL
     (SELECT i.*
      FROM influencer_profiles AS i 
      WHERE c.id = i.category_id
      ORDER BY i.updated_at
      LIMIT 2
     ) i
     ON 1=1 LEFT JOIN
     users u 
     ON i.user_id = u.id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60382853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档