2

我有一个简单的表格来计算网站上的访问者数量。

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

我想选择第 1 天到第 4 天每天的访问者数量,但我也想要第 3 天的值。由于缺少第 3 天,我想知道是否可以选择一个范围内的所有整数,如果该列缺少,将返回默认值。一个简单的“SELECT visitor FROM table WHERE day >= 1 AND day <= 4 ORDER By day”查询将返回“2, 5, 1”,但我要查找的查询将返回“2, 5, 0, 1 ”。

4

3 回答 3

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子查询中的所有天数。也许您有另一个带有序列号的表,可以帮助解决这个问题和其他查询。

于 2013-05-19T18:43:01.713 回答
1

使用您用于网站的脚本语言的强大功能来检查丢失的内容days并显示0那些日子

于 2013-05-19T18:40:54.870 回答
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
于 2013-05-19T18:46:46.223 回答