2

クエリを実行して、さまざまなパラメータが適用されるすべてのレコードを生成しています。

関係するテーブルに人に関する詳細が含まれているとします。

「男性」と「女性」の両方のエントリのレコードを作成したいのですが、「40」と言うよりも年齢が低い男性のみを表示したいと思います。

現在、私はこのようなクエリを持っています。

SELECT *
FROM table
WHERE gender IN('Male', 'Female') AND age < 40

男性のみに年齢ルールを適用するにはどうすればよいですか?CASEステートメントを使用しますか?

編集

ここでは触れなかったWHERE句内に他の多くのパラメーターがあるので、OR演算子の使用を避けたいと思います。これを最初に述べなかったことをお詫びします。

4

5 に答える 5

3

レコードに固有のフィルターを1つ、レコードに1行を含めるように句をCASE変更するだけで、ステートメントは必要ありません。WHERE'Male''Female'

SELECT *
FROM table
WHERE (gender = 'Male' AND age < 40)
    OR gender = 'Female'

これがデモ付きのSQLフィドルです

句にさらに項目がある場合は編集します。WHERE括弧を使用して基準を追加します。

SELECT *
FROM table
WHERE 
(
    (gender = 'Male' AND age < 40)
        OR gender = 'Female'
)
AND -- place your other WHERE filters here
于 2012-08-14T14:32:39.507 に答える
2

There are many ways to write this, but this is probably the clearest:

SELECT * 
FROM table 
WHERE gender = 'Female' 
    or (gender = 'Male' AND age < 40) 
于 2012-08-14T14:31:37.390 に答える
2
SELECT * 
FROM table 
WHERE (gender = 'Female' OR (gender = 'Male' AND age < 40)) AND ...
    -- the rest of your WHERE criteria goes here
于 2012-08-14T14:32:33.133 に答える
1
SELECT *
FROM table
WHERE (age < 40 and gender = 'Male')
or gender = 'Female'
于 2012-08-14T14:31:55.327 に答える
0

IN no = を使用

SELECT *
FROM table 
WHERE gender IN('Female') OR (gender IN('Male') AND age < 40);
于 2012-08-14T14:35:41.000 に答える