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)
我遇到了一个 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)