2015-02-24 42 views
0

如果keep_base_amount为空,那么我想在where子句中使用country_id=236,否则我想在country_id中使用keep_base_amount的值。在WHERE子句中使用条件语句mysql

我有查询是这样的:

SELECT * FROM account_treasury_local 
WHERE 
CASE WHEN keep_base_amount IS NOT NULL THEN country_id = keep_base_amount 
ELSE country_id = '236' END 

有一个记录在数据库中。但是,我没有得到任何结果。上述查询中是否有任何缺失/错误。

+0

数据库中的记录是什么?因为这应该工作,但我宁愿使用AND | OR而不是CASE子句 – harcos 2015-02-24 21:33:35

回答

3

像这样简单

SELECT * FROM account_treasury_local 
WHERE (keep_base_amount IS NOT NULL AND country_id = keep_base_amount) OR (keep_base_amount IS NULL AND country_id = '236') 
1

你试过:

SELECT * FROM account_treasury_local 
WHERE 
    (keep_base_amount IS NOT NULL AND country_id = keep_base_amount) 
    OR 
    (keep_base_amount IS NULL AND country_id = '236') 

我不知道我正确理解你的问题。