我正在尝试学习Microsoft SQL Server,并且我试图弄清楚如何执行以下操作。
我有两张桌子:
用户
id fname lname username
111 kely dike kdike
222 hana sho hsho
333 mike dime mdime
444 sergi xan sxan
和
email_recipient
id recipient_id fname lname
1 222 hana sho
2 222 hana sho
3 222 hana sho
4 333 mike dime
5 111 kely dike
6 111 kely dike
7 444 sergi xan
8 444 sergi xan
9 444 sergi xan
10 444 sergi xan
我想要做的是计算每个用户收到的电子邮件数量,如下所示:
id fname lname username email_recipient total
111 kely dike kdike 2
222 hana sho hsho 3
333 mike dime mdime 1
444 sergi xan sxan 4
有人可以指出正确的方向吗?
答案 0 :(得分:3)
你可以试试这个。
SELECT a.id, a.fname, a.lname, a.username, COUNT(*) AS email_recipient_total
FROM users a
INNER JOIN email_recipient b ON b.recipient_id = a.id
GROUP BY a.id, a.fname, a.lname, a.username
<强>结果强>
| ID | FNAME | LNAME | USERNAME | EMAIL_RECIPIENT_TOTAL | ---------------------------------------------------------- | 111 | kely | dike | kdike | 2 | | 222 | hana | sho | hsho | 3 | | 333 | mike | dime | mdime | 1 | | 444 | sergi | xan | sxan | 4 |
答案 1 :(得分:0)
我的猜测是,这可能会有稍微好一点的表现,但实际上答案基本相同:
SELECT
a.id,
a.fname,
a.lname,
a.username,
b.email_recipient_total
FROM users a
INNER JOIN (
select recipient_id, COUNT(*) AS email_recipient_total
from email_recipient
group by recipient_id
) b ON b.recipient_id = a.id