SQL 括号

SQL Parenthesis

我遇到了一个 SQL 表达式的问题,它没有按照我认为应该的方式执行。

我有属于客户的工作,而且这些工作可能与某个项目有关,或者该项目为空(如果它们与 project_id 列中的项目有关,则它显示为 int)。

首先,我正在接受所有可用的工作,但我需要在项目为空时删除某些客户。

我在 WHERE 子句中这样做:

AND (p4_.uid NOT IN (722, 4736, 1041, 735) AND s3_.project_id IS NULL)

但是SQL像这样把它当作两个分开的AND

AND p4_.uid NOT IN (722, 4736, 1041, 735) 
AND s3_.project_id IS NULL

例如,即使客户端分配了项目 ID 的作业,也不会显示来自 uid 735 的客户端的任何内容。

but I need to remove certain clients when the project is null

这个要求应该写成:

AND NOT (p4_.uid IN (722,4736,1041,735) AND s3_.project_id IS NULL)

或等价物:

AND (p4_.uid NOT IN (722,4736,1041,735) OR s3_.project_id IS NOT NULL)