如果所有相应的行与特定条件不匹配,则包括Caller_id

时间:2015-07-25 09:58:18

标签: mysql sql

我有一个表CallTable,其中包含名称为caller_idIs_picked_up的列,其中包含的状态是否已被提取。

Caller_id     Is_picked
1                no  
1                yes 
1                no
2                no  
3                no

我希望从不接听电话的来电者。在上面的情况2和3将是输出。

3 个答案:

答案 0 :(得分:3)

您可以group by每个唯一Caller_id并检查Is_picked的列值的条件计数是否为0:

select `Caller_id`
from `CallTable`
group by `Caller_id`
having sum(`Is_picked` = 'yes') = 0

<强> SQLFiddle Demo

答案 1 :(得分:0)

您可以使用exists运算符执行此操作:

SELECT DISTINCT caller_id
FROM   call_table a
WHERE  NOT EXISTS (SELECT *
                   FROM   call_table b
                   WHERE  a.caller_id = b.called_id AND is_picked = 'yes')

答案 2 :(得分:0)

使用子查询来获取至少有一个&#34;是&#34;在is_picked列中并使用NOT IN条件。

SELECT DISTINCT CALLER_ID FROM CallTable C1 where C1.CALLER_ID not in
(SELECT distinct CALLER_ID C2 FROM CallTable C2 having count(is_picked = "yes") > 1 );

SQLFiddle演示:http://sqlfiddle.com/#!9/ea507/13