Mysql 选择在同一列中具有标志x1但不具有标志x2的所有ID
从具有两列ID和Flag的表中Mysql 选择在同一列中具有标志x1但不具有标志x2的所有ID,mysql,Mysql,从具有两列ID和Flag的表中 ID Flag 111 2 222 2 333 2 444 2 333 5 111 5 我想选择所有有2个标志但没有5个标志的id 预期答案 222 444 我在下面试过了,但没用 SELECT * from table where flag in ('2') and flag not in ('5') 当简单的SQL语句可以完成任务时,为什么要生成复杂的SQL?您没有提到属性标志的数据类型。假定它不是一个数字,因此请尝试从表中选择*,其中fl
ID Flag
111 2
222 2
333 2
444 2
333 5
111 5
我想选择所有有2个标志但没有5个标志的id
预期答案
222
444
我在下面试过了,但没用
SELECT * from table
where flag in ('2')
and flag not in ('5')
当简单的SQL语句可以完成任务时,为什么要生成复杂的SQL?您没有提到属性
标志的数据类型。假定它不是一个数字,因此请尝试从表中选择*,其中flag='2'代码>。如果标志
为数字数据类型,则跳过='2'
@Raky中的'
,该标志将返回111和333,我不想将其包含在输出中。否,它将列出标志为2的所有id和标志。因此,结果将是11122233444。最后两条记录将在结果中忽略。试试看。你的目标不明确?您要求列出属性标志值为2的所有记录,但不希望列出标志值为2的某些属性id。我在下面尝试了,但这不起作用。当然其中的两个条件都在同一行中选中。和上未受影响的其他行。
SELECT id
FROM source
GROUP BY id
HAVING SUM(flag=2)
AND !SUM(flag=5)