2013-03-28 62 views
10

我試圖在MySQL WHERE語句中使用IF ... ELSE函數而沒有成功。IF ... WHERE子句中的ELSE MySQL

我有這個疑問:

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

好吧,這是我的查詢與IF語句。

但是,我怎樣才能使用「ELSE」?

例子,我願做類似的事情:

IF語言匹配NL --->選擇ID字段其中語言是NL

否則,如果語言不匹配NL - - >選擇id字段,其中語言是en

我該如何在MySQL查詢中執行此操作?

謝謝大家!

+0

你可以張貼一些示例數據,和您的查詢的預期結果? – eggyal

+0

什麼是'select ID字段where language is nl'? – didierc

回答

16

的語法IF是:

IF(test_expr, then_expr, else_expr) 

,所以你可以不喜歡IF(test1, result1, IF(test2, result2, else_result))但它不會是非常具有可讀性,所以還有的CASE表達用於這一目的。

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

如果要條件的選擇列,您可以使用在選擇字段直接IF

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

注意,在表達式where子句或者是TRUEFALSE,所以寫

IF(expr, TRUE, FALSE) 

相同

expr 
8

使用CASE代替

CASE 
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0 
END as languages