IF ...在WHERE子句MySQL中的ELSE

时间:2013-03-28 13:28:50

标签: mysql if-statement

我试图在MySQL WHERE语句中使用IF ... ELSE函数但没有成功。

我有这个问题:

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

好的,这是我对IF语句的查询。

但是,我如何使用“ELSE”?

示例,我想做类似的事情:

如果语言匹配 nl --->选择语言为 nl

的id字段

ELSE IF语言不匹配 nl --->选择语言为 en

的id字段

请问如何在MySQL查询中执行此操作?

感谢所有人!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

改用CASE

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