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

标签 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

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

我知道这个问题可能会得出推测性的答案,但我很想知道是否有一些我不知道的编程原则在这里使用。

最佳答案

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

例如,假设我想返回在上次订单中购买了 3、4 或 5 件产品的客户数量。但实际上,并没有购买过4件商品的顾客。如果我只是对我的数据运行计数查询,我根本不会得到购买了 4 件产品的客户的行。

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

顺便说一下,人们也经常用日期表来做这件事。

关于mysql - 创建列出数字 1 到 500,000 的 SQL 表有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985110/

相关文章:

php - 如何使用 TextMagic 服务并在 php 中保存电话号码

sql-server - 使用缓存的凭据跨域边界连接到SQL 2005

mysql - Kubernetes 多数据库实例或 HA 单实例

sql - 如果索引用于查询,PostgreSQL 将不会使用索引进行投影

java - 方法执行多次而不是一次

MySQL - 根据提交的工作选择用户名(二变量)

php - 将来自其他表的 select id 与 insert on single 命令结合起来

php - 如何连接回显字符串以在从 MySQL 中提取的值周围包含文字单引号?

sql - 如何显示除第一个表格行之外的所有内容?

SQL : Retrieve inserted row IDs array/table