1

现在我有:

WHERE flag_1 NOT IN ("D") AND flag_2 NOT IN ("D")

我有两组人在处理相同的数据,一旦一组完成,他们就会“标记”它D,但报告仍然需要提取信息,直到两者都被标记D

现在,如果有任何一个被标记D,报告就会排除数据,但我只希望在两个方面都完成并标记后将其排除D

有什么指导吗?

4

3 回答 3

5

我只希望在两个方面都完成并标记为“D”后将其排除。

这将翻译为:

WHERE NOT (flag_1 = 'D' AND flag_2 = 'D')

注意:我没有看到IN列表中具有单个值的运算符的意义,所以我改为简单的=.

于 2019-03-13T23:59:48.810 回答
2
WHERE flag_1 <> 'D' OR flag_2 <> 'D'

如果您希望报告继续提取记录,直到两个标志都位于'D',检查不相等的标志'D'会将它们拉入集合中。

于 2019-03-14T00:39:36.567 回答
1

或者您可以将其翻译为WHERE flag_1 <> 'D' AND flag_2 <> 'D'. 如果您想轻松测试表达式是否与值列表中的任何值匹配,则可以使用 SQLIN条件(有时称为运算符)。IN在您的情况下,您只有一个值要评估。

NOT是否定,<> (not equal to)是比较运算符,它们都是ISO标准。并且没有性能差异。

于 2019-03-14T00:14:46.287 回答