2012-08-30 55 views
8

Tôi muốn truy xuất dữ liệu với các điều kiện trong mệnh đề WHERE.
Dưới đây là bảng một cái gì đó của tôi trông giống như:Điều khoản WHERE với nhiều điều kiện lồng nhau

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

tình trạng của tôi trong WHERE khoản là:
if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

tôi đang cố gắng mã này để đạt được điều này:

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

Mã này công trình tốt cho MySQL (see this SQLFiddle) nhưng không hoạt động cho SQL Server (see this SQLFiddle) và đưa ra lỗi sau hoặc:

Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end

Bất kỳ đề xuất nào?

+1

Không thấy bất kỳ lý do gì để giải thích câu hỏi. Upvoted :) – hgulyan

+0

trường hợp không cần thiết ở đây –

+0

@NitinGoyal Truy vấn thực tế của tôi là khác nhau và phức tạp. Tôi phải sử dụng câu lệnh 'CASE' ở đâu. Tôi chỉ đơn giản là nó ở đây. – hims056

Trả lời

6
SELECT * FROM testing 
WHERE 
Age > case Location When 'Bhuj' then 20 
       When 'Mumbai' then 25 
       end 
+0

Ồ. sai lầm rất tầm thường của tôi. Chính xác những gì tôi muốn. – hims056

13

Tôi nghĩ rằng đây là những gì bạn đang cố gắng để đạt được

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

Kiểm tra SQLFiddle

UPDATE:

tuyên bố trường hợp trả về một giá trị, bạn không thể có một điều kiện bên trong nó.

+0

Có chính xác. Nhưng chúng ta không thể sử dụng câu lệnh 'CASE' mà tôi đã chỉ ra? – hims056

+0

Kiểm tra cập nhật của tôi. – hgulyan

+0

Chúng ta có thể sử dụng 'CASE' trong mệnh đề' WHERE'. Xem một câu trả lời khác bởi podiluska. – hims056

Các vấn đề liên quan