web-dev-qa-db-ja.com

IF ... WHERE句のMySQLでのELSE

MySQL WHEREステートメントでIF ... ELSE関数を使用しようとしていますが、成功しません。

私はこのクエリを持っています:

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

OK、これはIFステートメントを使用した私のクエリです。

しかし、「ELSE」もどうやって使うの?

例、私は同様のことをしたいと思います:

言語が一致する場合nl --->言語が存在するIDフィールドを選択nl

ELSE IF language not match nl ---> select id field where language is en

MySQLクエリでこれを行うにはどうすればよいですか?

ありがとうございます!

10
David Madhatter

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句の式はTRUEまたはFALSEのいずれかであることに注意してください。

_IF(expr, TRUE, FALSE)
_

と同じです

_expr
_
16
didierc

代わりにCASEを使用してください

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