选择mysql中缺少行的默认值

时间:2013-05-19 18:35:11

标签: mysql sql

我有一个简单的表来记录网站上的访问者数量。

|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“。

3 个答案:

答案 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