12

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テストWHEREcaseLocation When'Bhuj' then Age> 20 When'Mumbai' then Age> 25 end

なにか提案を?

4

2 に答える 2

20

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

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

SQLFiddleを確認してください

アップデート:

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

于 2012-08-30T07:44:50.707 に答える
8
SELECT * FROM testing 
WHERE  
Age > case Location When 'Bhuj' then 20 
              When 'Mumbai' then 25 
              end
于 2012-08-30T07:48:20.540 に答える