2012-06-12 43 views
0

使用条件名称这是我的MySQL查询:更换空字段为0,在查询

SELECT ROUND(AVG(p.votes), 2) AS 'votes', games.* 
FROM games 
LEFT JOIN polls p ON (p.gid = games.id) 
GROUP BY games.id; 

它工作正常,但如果没有在polls表上的任何游戏票 - 的votes场是NULL,然后在结果中 - 我怎样才能取代它,所以它会显示0而不是(因为polls中找到0行)。

另外:

是否可以命名我的病情,然后使用它fe。在MySQL中进行计算?

这就是我的意思是:

SELECT ROUND(AVG(votes), 2) AS 'votes', (votes/50 * 100) FROM `polls`; 

将抛出了一个错误信息说,votes是一个未知的列在那里。

所以是有可能使用的条件(如“”)的名字在我的查询计算的目的呢?

回答

1

第一:

COALESCE(ROUND(AVG(p.votes), 2), 0) 

二: 没有,不可能在完全相同的声明。如果别名部分位于子查询中,则可能是这样。 所以,你必须重写

(COALESCE(ROUND(AVG(p.votes), 2), 0)/50 * 100) 

COALESCE和IFNULL达到同样的目标(也许不完全一样),但是COALESCE是ANSI SQL。

1

您不能为字段创建别名,并在相同的select语句中使用相同的别名。

使用下面的查询:

SELECT Ifnull(Round(Avg(votes), 2), 0) AS 'votes', 
     (Ifnull(Round(Avg(votes), 2), 0)/50 * 100) 
FROM `polls`;