2014-06-07 85 views
0

如果初始條目不存在,我試圖讓mysql返回一組基本的值。Mysql如果爲空結果返回默認值

這是我已經嘗試:

SELECT 
IFNULL(count(mcr.rating), 1) as rating_count, 
IFNULL(avg(mcr.rating), 5) as rating_average, 
IFNULL(sum(mcr.rating ), 5) as rating_value, 

IFNULL(mck.slug, '-') as rating_slug, 
IFNULL(mck.name, '-') as rating_name, 
IFNULL(mck.criteria_id, '-') as id, 
IFNULL(mck.category, '-') as category 

FROM microstock_criteria_key AS mck 
LEFT JOIN microstock_collective_reviews AS mcr ON mck.criteria_id = mcr.criteria_id 
WHERE mcr.agency_id =5 
GROUP BY mck.criteria_id 
ORDER BY mck.priority ASC 

但我仍然得到:

MySQL返回的查詢結果爲空(即零行)。 (查詢花費 0.0004秒)

當我(如果我沒有理解)會得到我的IFNULL語句設置的默認值。

那麼,如何正確地做到這一點,以返回默認結果,將會是空的結果?

+0

如果mck絕對沒有結果,那麼您需要'UNION'和一個默認選擇器。 –

回答

1

由於您正在使用審覈表的agency_id進行過濾,因此我認爲您需要RIGHT JOIN。

SELECT 
IFNULL(count(mcr.rating), 1) as rating_count, 
IFNULL(avg(mcr.rating), 5) as rating_average, 
IFNULL(sum(mcr.rating ), 5) as rating_value, 

IFNULL(mck.slug, '-') as rating_slug, 
IFNULL(mck.name, '-') as rating_name, 
IFNULL(mck.criteria_id, '-') as id, 
IFNULL(mck.category, '-') as category 

FROM microstock_criteria_key AS mck 
RIGHT JOIN microstock_collective_reviews AS mcr ON mck.criteria_id = mcr.criteria_id 
WHERE mcr.agency_id =5 
GROUP BY mck.criteria_id 
ORDER BY mck.priority ASC