首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL:从多个表返回计数

MYSQL:从多个表返回计数
EN

Stack Overflow用户
提问于 2014-07-29 20:34:11
回答 3查看 35关注 0票数 0

下面的脚本有问题。我正在尝试返回一个表,其中两个邮件的收件人计数同时返回。我知道我所拥有的是错误的,但它可能让你知道我在寻找什么。

代码语言:javascript
复制
SELECT count( mailing_recipient_id ) AS CountA
                    FROM mailing_recipient
                    WHERE `mailing_id` =(
                                        SELECT mailing_id
                                        FROM mailing
                                        WHERE mailing_name = 'Mailing A' ) 
UNION

SELECT COUNT( mailing_recipient_id ) AS CountB
                    FROM mailing_recipient
                    WHERE `mailing_id` =(
                                        SELECT mailing_id
                                        FROM mailing
                                        WHERE mailing_name = 'Mailing B' ); 

非常感谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-29 20:40:15

您可以使用JOINGROUP BY来实现所需的结果,如下所示:

代码语言:javascript
复制
SELECT
     m.mailing_name ,
    count(mr.mailing_recipient_id)
FROM mailing_recipient mr
INNER JOIN mailing m
ON mr.mailing_id = m.mailing_id
GROUP BY m.mailing_name
ORDER BY m.mailing_name;
票数 1
EN

Stack Overflow用户

发布于 2014-07-29 20:38:23

只需将它们放入子查询:

代码语言:javascript
复制
    SELECT SUM(tot.CountA) FROM (

SELECT count( mailing_recipient_id ) AS CountA
                    FROM mailing_recipient
                    WHERE `mailing_id` =(
                                        SELECT mailing_id
                                        FROM mailing
                                        WHERE mailing_name = 'Mailing A' ) 
UNION

SELECT COUNT( mailing_recipient_id ) AS CountA
                    FROM mailing_recipient
                    WHERE `mailing_id` =(
                                        SELECT mailing_id
                                        FROM mailing
                                        WHERE mailing_name = 'Mailing B' ); 

) tot

匹配两个联合查询中的别名,并对别名进行求和。

票数 0
EN

Stack Overflow用户

发布于 2014-07-29 20:38:43

代码语言:javascript
复制
SELECT IFNULL(SUM(mailing_name = 'Mailing A'), 0) AS CountA,
       IFNULL(SUM(mailing_name = 'Mailing B'), 0) AS CountB
FROM mailing_recipient mr
JOIN mailing m ON mr.mailing_id = m.mailing_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25024475

复制
相关文章

相似问题

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