我需要在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
答案 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,''));
最后一个例子可能是您最初想到的。