Sql查询根据另一个表中的条目派生列值

时间:2012-09-04 10:31:48

标签: mysql sql

我有一个包含字段idemail表。

订阅表格,其中包含以下字段:person_idcategory_id

如果某人订阅了订阅,则表格中至少会有一个条目。

我想查询 person 表,第3列有1或0,具体取决于是否订阅了人。

select p.id, p.email , [is_subscribed] 
from person p
如果订阅表中有条目,则

is_subscribed应为1,否则应为0。

我如何实现上述目标?

4 个答案:

答案 0 :(得分:1)

在订阅时使用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

答案 1 :(得分:0)

   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

答案 2 :(得分:0)

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` 

答案 3 :(得分:0)

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进行必要的更改。