2013-05-19 38 views
2

我有一個簡單的表來保持網站訪問者數量的計數。在mysql中選擇缺省行的默認值

|Day|Visitors| 
|1 |2  | 
|2 |5  | 
|4 |1  | 

我想選擇每天遊客爲1天到4的數,但我也想,已有3天缺少3天的值,我不知道是否有可能選擇的所有整數一個範圍,如果該列丟失,則會返回一個默認值。一個簡單的「SELECT訪客從表WHERE日=> 1和日< = 4 ORDER按天」查詢將返回「2,5,1」,但我正在查找的查詢將返回「2,5,0,1 」。

+0

數據的這種轉變將是很容易做到的消耗查詢結果的程序。我會這樣做,或者插入缺失日期的記錄,並將它們的值設置爲零。 –

回答

5

這裏的腳本語言的力量是爲您的數據爲例:

select n.n as days, coalesce(visitors, 0) as visitors 
from (select 1 as n union all select 2 union all select 3 union all select 4 
    ) n left outer join 
    t 
    on t.days = n.n; 

你需要填寫n子查詢中的所有天數。也許你有另一張有連續數字的表格,可以幫助解決這個問題和其他查詢。

1

使用您正在使用的網站,查看失蹤days,並顯示0那些日子

0

如果你真的需要從數據庫中獲取這一點,你可以用一個表來保存天數,做一個LEFT JOIN與它:

SELECT coalesce(table.visitors, 0) AS visitors 
FROM days_table 
LEFT JOIN table ON days_table.day = table.day 
WHERE table.day >= 1 AND day <= 4 ORDER By day 
+1

我將使用PHP填補缺失的日子。這應該不難,但我只是想知道我是否低估了SQL查詢的力量...... – Spifff

+0

很高興知道。研究更好的解決方案總是更好。 – rcdmk