创建列出数字1到500,000的SQL表有什么好处?

时间:2016-05-02 14:38:10

标签: mysql sql-server database

我今天在TFS数据库周围试图运行一些统计数据,我遇到了一个名为tbl_Number的表。此表包含一列Number,所有值都只是值1到500,000。没有任何值与列表中各自的索引不同,正如您在LinqPad中运行的查询的屏幕截图中所示:

enter image description here

Tbl_Numbers.Max(x => x.Number).Dump(); //max value
Tbl_Numbers.Count().Dump(); //number of entries
var asList = Tbl_Numbers.ToList();
asList.Where(x => asList[x.Number - 1].Number != x.Number).Any().Dump();
//False shows that every entry matches the value at its ordinal location in the list

我的问题是:这样一张表的用途是什么?这是因为其中一个引用的数字由于某种原因需要改变吗?从这个表中识别数字的唯一方法是使用相同的数字,所以我看不出这个表的用途。

我意识到这个问题可能导致猜测的答案,但我有兴趣看看是否有一些编程原则,我不知道在这里使用的是什么。

1 个答案:

答案 0 :(得分:3)

它可以在OUTER JOINS中使用,以确保您始终获得给定范围内的所有数字,即使没有与该数字相关的数据。

例如,假设我想要返回在最后一个订单上购买3,4或5个产品的客户数量。但事实上,没有客户购买过4种产品。如果我只是对我的数据进行了计数查询,那么根本不会为那些购买了4种产品的客户提供一排。

但是,如果我查询我的数字表并将LEFT JOIN查询到我的数据,我会得到数字4,计数为0或NULL,具体取决于我编写查询的方式。

顺便说一句,人们通常也会使用日期表来执行此操作。