Mysql SQL查询以查看是否满足条件,而不满足其他条件

Mysql SQL查询以查看是否满足条件,而不满足其他条件,mysql,sql,Mysql,Sql,我有一个MySQL表,如下所示: 我试图找出的是,列anaID的值是22还是23,并且没有为该subID/sampleID组合的anaID分配其他值 差不多 select * from anaData where subID='2020-04-21-17' and sampleID='crazy2' and (anaID=22 or anaID=23) and andID <> ??anything else?? 从anaData中选择*,其中subID='2020-04-

我有一个MySQL表,如下所示:

我试图找出的是,列anaID的值是22还是23,并且没有为该subID/sampleID组合的anaID分配其他值

差不多

select * from anaData where subID='2020-04-21-17' and sampleID='crazy2' 
and 
(anaID=22 or anaID=23)
and 
andID <> ??anything else??
从anaData中选择*,其中subID='2020-04-21-17'和sampleID='crazy2'
及
(anaID=22或anaID=23)
及
还有别的吗??

我可以查询出所有的匹配项并循环它们,让程序逻辑来决定,但我希望这可以在查询中完成。

您可以使用
not exists

select *
from anaData a
where subID = '2020-04-21-17' and
      sampleID = 'crazy2' and
      not exists (select 1
                  from anaData a2
                  where a2.subID = a.subID and a2.sampleID = a.sampleID and
                        a2.anaID not in (22, 23)
                 );

事实证明,在外部查询中不需要(22,23)中的anaID。
存在
会处理该问题。

如果至少存在一个anaID 22或23,则此操作有效:

select subID, sampleID
from anaData 
where subID='2020-04-21-17'
  and sampleID='crazy2' 
group by subID, sampleID
having
   sum(case when anaID in (22, 23) then 1 else -100 end) > 1
如果希望22和23都切换到
=2
(假设subID/sampleID/anaID的组合是唯一的)


这也可以在不带WHERE条件的情况下使用。

post所需的ouputit应返回anaID为22或23的数据集,或返回空结果