Mysql SQL查询以查看是否满足条件,而不满足其他条件
我有一个MySQL表,如下所示: 我试图找出的是,列anaID的值是22还是23,并且没有为该subID/sampleID组合的anaID分配其他值 差不多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-
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的数据集,或返回空结果