表上的左连接 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 JOIN
和GROUP 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的主要内容,如果未能解决你的问题,请参考以下文章