0

我在 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 。

4

3 回答 3

1

只要记住这样的规则:括号 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 是多余的。

于 2013-04-09T08:11:17.963 回答
0

您是否希望 sales.type 不等于 2 或(当您的客户不等于 0 时 sales.type 等于 2?)您可以同时使用 HAVING 和 WHERE。选择 * from sales where type !=2 or (type=2 HAVING customers !=0);

于 2013-04-09T08:13:34.857 回答
0

只是我尝试这个我发现工作:sqlfiddle

select * from sale where
sale.type != 2 OR (sale.type = 2 AND sale.customers != 0 )
于 2013-04-09T08:16:17.550 回答