1

我有 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

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

用英语:告诉我表一中的每个独特的人以及表二中每个条目的计数。

示例输出:

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

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

4

1 回答 1

2
select *
from
    t1
    left join
    (
        select personidref, count(*) total
        from t2
        group by personidref
    ) s using(personidref)
order by puid

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

于 2013-06-18T20:08:53.340 回答