表上的左连接 COUNT

Posted

技术标签:

【中文标题】表上的左连接 COUNT【英文标题】:Left Join COUNT on tables 【发布时间】:2013-06-18 20:03:54 【问题描述】:

我有 2 张桌子:

puid | personid | ptitle
----------------------------
1    | 200      | richard
2    | 201      | swiss

suid | personidref | stitle
----------------------------
1    | 200         | alf
2    | 201         | lando
3    | 200         | willis
4    | 201         | luke
5    | 201         | kojak
6    | 200         | r2-d2
7    | 201         | jabba

我正在尝试使用表 2 的计数离开联接。我试图弄清楚使用generate_series 或子选择,但我无法处理语法。

英文:显示表一中每个唯一的人,并计算表二中每个条目的计数。

示例输出:

puid | personid | ptitle  | count
---------------------------------
1    | 200      | richard | 3
2    | 201      | swiss   | 4

这是一个简单的子查询吗?generate_series 是适合这项工作的工具吗?

【问题讨论】:

generate_series() 在这里没有任何作用。这是LEFT JOINGROUP BY 的简单问题。 我会回去阅读generate_series 的文档并尝试正确应用用例,谢谢 【参考方案1】:
select *
from
    t1
    left join
    (
        select personidref, count(*) total
        from t2
        group by personidref
    ) s using(personidref)
order by puid

请注意,在加入之前进行聚合可能比之后进行聚合有性能提升。

【讨论】:

所以这是一个新手问题......所以子查询总是先触发然后对吗?因此该产品可用于主查询。我会玩弄这个的各种版本来适应它。谢谢! @robert 因为它要加入一个计算表,所以显然必须先计算它。

以上是关于表上的左连接 COUNT的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL:与 Group_Concatenate 一起使用的两个表上的左连接

MySQL 上的左连接 + 计数 + 总和

如何在jooq查询的左连接中检查记录是不是完​​全为空

日期字段上的左连接 + Where 子句

如何通过 django 模型查询创建与组的左连接

Mysql在同一张表上的多个左连接