在where子句中使用if()

时间:2019-04-03 16:15:54

标签: mysql

我需要在where子句上做一个if else。

我想做类似的事情

Select id from table where if(client_id = 10, client_id = 10, client_id = 1) AND foo = A

很明显我需要 如果存在client_id 10,其中foo =返回ID 其他 如果foo = A,则client_id 10不存在 使用client_id = 1,其中foo = A

1 个答案:

答案 0 :(得分:1)

我认为您不需要IF。您可以尝试以下查询:

SELECT id FROM table WHERE client_id in (10,1) AND foo='A';

编辑:

查询示例1:

SELECT IF(client_id=10 AND foo='A',id,'') AS '10A',
IF(client_id <> 10 AND client_id=1 AND foo='A',id,'') AS '1A'
FROM table HAVING (10A OR 1A) <> '';

查询示例2:

SELECT id
FROM table 
WHERE 
client_id=CASE WHEN client_id=10 AND foo='A' THEN client_id
WHEN client_id <> 10 AND client_id=1 AND foo='A' THEN client_id  
END;

查询示例3:

SELECT id
FROM table 
WHERE 
client_id=IF(client_id=10 AND foo='A',client_id,
IF(client_id <> 10 AND client_id=1 AND foo='A',client_id,''));

最后一个例子可能是您最初想到的。