我有一个简单的表来记录网站上的访问者数量。
|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“。
答案 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 :(得分:1)
使用您用于网站的脚本语言的强大功能来检查丢失的days
并在那些日子显示0
答案 2 :(得分: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