2014-02-13 30 views
0

如何显示“1”而不是NULL?如何显示另一个值而不是NULL?

这里我表:

|policies| 
    |id| |policy| 
     1 abc 
     2 def 

|insurances| 
    |id| |policy_id| |money| 
     1   1  1000 
     2   1  2000 
     3   2  3000 
     4   2  4000 
     5   1  1000 

这里查询:

select sum(money) as cash from insurances i 
INNER JOIN policies p ON p.id = i.policy_id 
WHERE i.policy_id = 3 
Group by i.policy_id 

在这种情况下,当policy_id = 3它显示NULL:

|cash| 
    NULL 

我想表明:

|cash| 
    1 

我也试过,但没有工作:

select sum(money)+1 as cash from insurances i 
INNER JOIN policies p ON p.id = i.policy_id 
WHERE i.policy_id = 3 
Group by i.policy_id; 

Here is the link

+0

见COALESCE() 。 – Strawberry

回答

1
SELECT COALESCE(sum(money), 1) as Cash 
FROM (
    SELECT policy_id, money 
    FROM 
    insurances i INNER JOIN policies p 
    ON p.id = i.policy_id 
    WHERE 
    i.policy_id = 1 
) s 

编辑或者你可以用这个小动作尝试:

​​
+0

我试过你的代码,我得到4000而不是0 ....... http://sqlfiddle.com/#!2/79979/30 –

+0

@CarlitosMorales请在这里看到http://sqlfiddle.com/# !2/79979/38我不得不删除组 – fthiella

+0

确定fthiella你的代码似乎在工作,但你有另一种方式吗?因为不是在生产工作时,它有5000行 –

相关问题