web-dev-qa-db-ja.com

複数の条件がネストされたWHERE句

WHERE句の条件でデータを取得したい。
これが私のテーブルのようなものです:

Name   Location    Age
----------------------
AAA     Bhuj       24
BBB     Mumbai     22
CCC     Bhuj       18
DDD     Bhuj       27
EEE     Mumbai     26

WHERE句の私の条件は次のとおりです。
if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

私はこれを達成するためにこのコードを試しています:

SELECT * FROM testing
WHERE 
CASE Location WHEN 'Bhuj' THEN Age>20
              WHEN 'Mumbai' THEN Age>25
END;

このコードはMySQL( このSQLFiddleを参照 )では正常に機能しますが、SQL Server( このSQLFiddleを参照 )では機能せず、次のエラーが発生します。

'>'の近くの構文が正しくありません。:SELECT * FROMテストWHEREケース場所 'Bhuj'の場合はAge> 20の場合 'Mumbai'の場合はAge> 25で終了

なにか提案を?

9
hims056
SELECT * FROM testing 
WHERE  
Age > case Location When 'Bhuj' then 20 
              When 'Mumbai' then 25 
              end
7
podiluska

これがあなたが達成しようとしていることだと思います

   SELECT * 
   FROM testing
   WHERE (Location = 'Bhuj' AND Age>20) 
        OR (Location = 'Mumbai' AND Age>25)

チェック SQLFiddle

更新:

Caseステートメントは値を返します。その中に条件を含めることはできません。

15
hgulyan