2012-06-12 62 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`;