现在我有:
WHERE flag_1 NOT IN ("D") AND flag_2 NOT IN ("D")
我有两组人在处理相同的数据,完成一组工作后,他们会“标记” D
,但是报告仍需要将信息提取到两者 strong>被标记为D
。
现在,如果 被标记为D
,该报告将排除数据,但我只希望在两个方面均已完成并标记为{{ 1}}。
有指导吗?
答案 0 :(得分:5)
我只希望在两个方面都完成并标记为“ D”后将其排除。
这将翻译为:
WHERE NOT (flag_1 = 'D' AND flag_2 = 'D')
注意:我看不到IN
运算符的意义,因为它在列表中只有一个值,所以我改为一个简单的=
。
答案 1 :(得分:0)
或者您可以将其翻译为WHERE flag_1 <> 'D' AND flag_2 <> 'D'
。如果要轻松测试表达式是否与值列表中的任何值匹配,则可以使用SQL IN
条件(有时称为IN
运算符)。在您的情况下,您只有一个值可以评估。
NOT
是一个否定词,<> (not equal to)
是一个比较运算符,它们都是ISO标准。而且没有性能差异。
答案 2 :(得分:0)
WHERE flag_1 <> 'D' OR flag_2 <> 'D'
如果您希望报表继续拉记录,直到两个标志都位于'D'
,则检查不等于'D'
的标志会将它们拉入集合。