Mysql 如果所有对应的行都没有';不符合一定条件

Mysql 如果所有对应的行都没有';不符合一定条件,mysql,sql,Mysql,Sql,我有一个表CallTable,列名为caller\u id和Is\u picked\u up,其中包含是否已拾取的状态 Caller_id Is_picked 1 no 1 yes 1 no 2 no 3 no 我要那些从未接过电话的人。在上述情况下,2和3将是输出。您可以通过分组每个唯一的调用方id,并检查是否拾取了的条件计数

我有一个表
CallTable
,列名为
caller\u id
Is\u picked\u up
,其中包含是否已拾取的状态

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

我要那些从未接过电话的人。在上述情况下,2和3将是输出。

您可以通过
分组每个唯一的
调用方id
,并检查是否拾取了
的条件计数
的列值yes在组中为0:

select `Caller_id`
from `CallTable`
group by `Caller_id`
having sum(`Is_picked` = 'yes') = 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')

使用子查询获取在
列中至少有一个“yes”的所有记录将被选中
并使用
不在
条件下

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演示:

@VishalZanzrukia:感谢您将小提琴组装在一起