我有一個人表字段id
,email
。sql查詢基於另一個表中的條目派生列值
和訂閱表中字段:person_id
,category_id
。
如果一個人訂閱訂閱表中至少有一個表中的條目。
我想查詢人表中第三列有1或0取決於人是否訂閱。
select p.id, p.email , [is_subscribed]
from person p
is_subscribed
應該是1,如果在訂閱其他表的條目應爲0
我怎樣才能實現上述?
我有一個人表字段id
,email
。sql查詢基於另一個表中的條目派生列值
和訂閱表中字段: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 Server查詢。對mysql進行必要的更改。
感謝您的快速解決方案:) –