我在 MySQL 中有一个名为 sale 的表,其中包含 3 列,如下所示:
id|customers|type
我想选择具有 type!=2 的销售或具有 type=2 和客户的销售!=0
我这样写声明:
sale.type != 2 OR (sale.type = 2 AND sale.customers != 0 )
但它没有给我正确的行。
此外,我必须对这个查询中的其他列使用 AND ,但它们之间的运算符都是 AND ,在这里我使用 OR 。
只要记住这样的规则:括号 OR!
where foo = 'bar'
and (sale.type != 2 OR (sale.type = 2 AND sale.customers != 0 ) )
and blah = 3
实际上,您的情况可以简化为:
( sale.type != 2 OR sale.customers != 0 )
因为从逻辑上检查 sale.type = 2 是多余的。
您是否希望 sales.type 不等于 2 或(当您的客户不等于 0 时 sales.type 等于 2?)您可以同时使用 HAVING 和 WHERE。选择 * from sales where type !=2 or (type=2 HAVING customers !=0);
只是我尝试这个我发现工作:sqlfiddle
select * from sale where
sale.type != 2 OR (sale.type = 2 AND sale.customers != 0 )