我的SQL查询有一个小问题。也许我只是不能醒来,喝第二杯咖啡,但看起来我的大脑仍然无法工作或弄清楚它已经让我的一天(早上)非常糟糕。
我想要做的是将2个表中的记录计为重复记录为1条记录。让我们说; 会员表 2.订阅表。
我想知道有多少会员有有效订阅。
SELECT COUNT(*) FROM members as main
INNER JOIN subscriptions as sub ON sub.member_id = main.id
WHERE
sub.status = '2' AND sub.active = '1'
GROUP BY main.id
显然不是这样。成员可以有超过1个有效订阅,因此我想将该成员计为1个订阅者(无论成员有多少活动订阅)。
我正在计划为成员订阅创建一个新表,但是这将只有一个我可能不需要的表。
我们非常感谢任何建议。
答案 0 :(得分:3)
构建查询的最直接方法是添加相关子查询:您的SQL几乎像英语一样:
SELECT COUNT(*)
FROM members as main
where exists (
select 1 from subscriptions as sub
where sub.member_id = main.id and sub.status = '2' AND sub.active = '1'
)
答案 1 :(得分:2)
这应该可以解决问题:
SELECT COUNT(DISTINCT main.id) FROM members as main
INNER JOIN subscriptions as sub ON sub.member_id = main.id
WHERE sub.status = '2' AND sub.active = '1'