0

以下のような3つの列を持つsaleという名前のMySQLにテーブルがあります:sale:

id|customers|type

type!=2 の sales を選択したい、または type=2 で customers!=0 の sales を選択したい

私はこのようなステートメントを書きます:

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 を一緒に使用できます。select * from sales where type !=2 or (type=2 HAVING customers !=0);

于 2013-04-09T08:13:34.857 に答える