2013-03-28 51 views
10

Tôi đang cố gắng sử dụng hàm IF ... ELSE trong câu lệnh WHERE của MySQL mà không thành công.NẾU ... ELSE trong mệnh đề WHERE MySQL

Tôi có truy vấn này:

SELECT id 
FROM mytable 
WHERE restrcountry NOT LIKE '%*nl*%' 
    AND (IF languages LIKE '%*nl*%', 1, 0) = 1; 

Ok, đây là truy vấn của tôi với IF tuyên bố.

Tuy nhiên, làm cách nào tôi cũng có thể sử dụng "ELSE"?

Ví dụ, tôi muốn làm một cái gì đó tương tự:

NẾU trận ngôn ngữ nl ---> chọn id lĩnh vực mà ngôn ngữ là nl

else if ngôn ngữ KHÔNG phù hợp nl - -> chọn trường id nơi ngôn ngữ là vi

Làm cách nào tôi có thể thực hiện điều này trong truy vấn MySQL, vui lòng?

Nhờ tất cả!

+0

Bạn có thể đăng một số dữ liệu mẫu, và kết quả có ý định truy vấn của bạn? – eggyal

+0

trường 'id chọn nơi ngôn ngữ là nl'? – didierc

Trả lời

16

Cú pháp cho IF là:

IF(test_expr, then_expr, else_expr) 

vì vậy bạn có thể làm một cái gì đó giống như IF(test1, result1, IF(test2, result2, else_result)) nhưng nó sẽ không thể rất dễ đọc, do đó biểu thức CASE cho mục đích đó.

CASE WHEN test1 THEN result1 
WHEN test2 THEN result2 
ELSE else_result END 

Nếu bạn muốn đặt điều kiện một cột chọn, bạn có thể sử dụng IF trong các lĩnh vực chọn trực tiếp:

SELECT IF(match, nl_column en_column) AS lang 
FROM table 

Lưu ý rằng một biểu thức trong một mệnh đề where là một trong hai TRUE hoặc FALSE, vì vậy viết

IF(expr, TRUE, FALSE) 

cũng giống như

expr 
8

sử dụng TRƯỜNG HỢP thay

CASE 
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0 
END as languages 
Các vấn đề liên quan