我想仔细检查一下:
如果您使用带有 NOT IN 条件的 WHERE 子句,并且只有一个条件,是否必须将该条件保留在括号中?
因此,在下面的子句中,如果删除 Y 和 Z,X 是否必须保留在括号中(参见WHERE NOT IN CLAUSE下面的第二个)。
WHERE LastEditedBy NOT IN ('X','Y','Z')
WHERE LastEditedBy NOT IN ('X')
Run Code Online (Sandbox Code Playgroud)
文档中的语法图显示了所需的括号,但没有它们也能工作:
select * from dual where dummy not in 'Y';
DUMMY
-----
X
Run Code Online (Sandbox Code Playgroud)
和
select * from dual where dummy in 'X';
DUMMY
-----
X
Run Code Online (Sandbox Code Playgroud)
两者都返回数据。
无论如何,包含括号并不会让你付出任何代价,让你与官方语法保持一致(正如 @jarlh 指出的,依赖未记录的行为是不明智的),对于其他人来说,查看你的代码可能不会那么混乱。代码,并且如果您稍后需要向列表添加更多值,将使将来的维护稍微容易一些。