sql - 在 WHERE 子句中混合使用 AND 和 OR 会产生意外结果

标签 sql postgresql

WHERE operation = 'cmn'
  AND client = '' OR client IS NULL
  AND ts >= '2014-03-01'
  AND ts <'2014-09-01'

我正在尝试这个 where 条件,但是 OR 没有按预期工作。

我的想法是保留 cmn 强制性,但客户端可以为空或 null。

我该怎么做?

最佳答案

只需将 括在方括号中:

WHERE operation = 'cmn'
AND (client = '' OR client IS NULL)
AND ts >= '2014-03-01'
AND ts < '2014-09-01'

关于sql - 在 WHERE 子句中混合使用 AND 和 OR 会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25914882/

相关文章:

postgresql - 是否可以在没有 ID 的情况下使用自动增量编号?

带有空子查询的 Postgresql OR 条件

postgresql - 如何从 postgresql 中的 plpgsql 函数返回的 SELECT 查询中提取字符串(或文本)?

sql - pl/sql - 比较 2 个用户表中的记录计数

mysql - 使用前缀和总和连接表

php - 在现有 MySQL 数据库上填充自动递增类型 ID?

sql - 如何在 PostgreSQL 中获取每条具有特定属性集的记录之后的第一条记录?

SQL。检查2个列表是否相交

PostgreSQL 字段名称

mysql - SQL 加入一列 LIKE 另一列