我有一个带有字段的人员id
表,email
。
还有一个包含字段的订阅person_id
表: , category_id
。
如果一个人订阅了订阅表,表中将至少有一个条目。
我想根据人员是否订阅来查询具有 1 或 0 的第三列的人员表。
select p.id, p.email , [is_subscribed]
from person p
is_subscribed
如果订阅表中有条目,则应为 1,否则应为 0。
我怎样才能实现上述目标?
在订阅和计数上使用 LEFT JOIN(在多个订阅的情况下)
SELECT p.id,p.email,IF(COUNT(s.category_id)>0,1,0) as is_subscribed
FROM
person as p
LEFT JOIN subscription as s ON s.person_id=p.id
GROUP BY p.id
select distinct p.id, p.email, ifnull(sign(subscription.id),0) as is_subscribed
from
person
left join subscriptions
on person.id = subscriptions.person_id
SELECT p.`id` , p.`email` , IF(COUNT(s.`id`)>0,1,0) AS count
FROM `person` p
LEFT JOIN `subscription` s ON s.`person_id` = p.`id`
select distinct person.id, person.email, cast((select count(id) from sub where id=1) as bit) from tab, sub where tab.id=1;
这是一个 MS SQL 服务器查询。对 mysql 进行必要的更改。