web-dev-qa-db-ja.com

WHERE、AND、ORを使用したSQL Selectステートメント

MySQLでSELECTクエリを実行したいと思います。私の目標は、sex=malefur=shortと(color=black or size=big)になる獣医データベース内のすべての犬を選択することです。

注:黒またはサイズが大きい犬を選択します。 2つの要件を満たす必要はありません。どちらか1つを満たす必要があります。

以下にSQLステートメントを記述しましたが、私が正しいかどうかはわかりません。

SELECT name, sex, fur, color 
FROM dogs 
WHERE TRUE sex='male' AND fur='short' AND color='black' OR size="big";

それがあまりにも混乱しているなら、私の言い回しを許してください。

13
dave

MySQLの演算子の優先順位 によると、ANDORよりも優先順位が高くなっています。

したがって、_C1 AND C2 OR C3_は_(C1 AND C2) OR C3_として扱われます

デフォルトの優先順位を上書きするには、括弧を次のように使用する必要があります:C1 AND (C2 OR C3)

あなたの場合、正しいクエリは次のとおりです。

_SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size="big");
_
31
codaddict

OR条件が正しく評価されるように、必ず括弧を追加してください。

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size='big');
4
Lance Rushing

目標の説明で括弧を使用する方法は正しいです。構文は次のとおりです。

SELECT name, sex, fur, color 
    FROM dogs 
    WHERE sex="male" AND fur="short" AND (color="black" OR size="big");
1
cherouvim

犬の名前、性別、毛皮、色を選択します。ここで、性別= '男性'と毛皮= 'ショート'および(色= '黒'またはサイズ= 'ビッグ');

0
Shiwangini

私はこれとその働きを使用しました。

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex="male" AND fur="short" AND (color="black" || size="big");
0
user1350714