相关疑难解决方法(0)

如何在运行SQL的计数器中找到"差距"?

我想在SQL表的计数器列中找到第一个"间隙".例如,如果有值1,2,4和5,我想找出3.

我当然可以按顺序获取值并手动完成它,但我想知道是否有办法在SQL中执行它.

此外,它应该是非常标准的SQL,使用不同的DBMS.

sql gaps-and-islands

97
推荐指数
5
解决办法
5万
查看次数

创建和填充数字表的最佳方法是什么?

我已经看到了许多不同的方法来创建和填充数字表.但是,创建和填充一个的最佳方法是什么?从最重要到最不重要的"最佳"被定义:

  • 使用最佳索引创建的表
  • 行生成最快
  • 用于创建和填充的简单代码

如果你不知道数字表是什么,请看这里:我为什么要考虑使用辅助数字表?

sql-server sql-server-2005

62
推荐指数
6
解决办法
9万
查看次数

SQL:在表中查找缺少的ID

我有一个表具有唯一的自动增量主键.随着时间的推移,可能会从表中删除条目,因此该字段的值中存在"漏洞".例如,表数据可能如下:

 ID  | Value    | More fields...
---------------------------------
 2   | Cat      | ... 
 3   | Fish     | ...
 6   | Dog      | ...
 7   | Aardvark | ...
 9   | Owl      | ...
 10  | Pig      | ...
 11  | Badger   | ...
 15  | Mongoose | ...
 19  | Ferret   | ...
Run Code Online (Sandbox Code Playgroud)

我对将返回表中缺少ID列表的查询感兴趣.对于上述数据,预期结果如下:

 ID 
----
 1
 4
 5
 8
 12
 13
 14
 16
 17
 18
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 假设初始第一个ID是1
  2. 应检查的最大ID是最后一个,即可以假设在当前最后一个之后没有其他条目(请参阅下面的其他数据)

上述要求的缺点是列表不会返回在ID 19之后创建且已删除的ID.我目前正在代码中解决这个问题,因为我持有创建的最大ID.但是,如果查询可以作为参数MaxID,并且还返回当前max和MaxID之间的那些ID,那将是一个很好的"奖励"(但肯定不是必须的).

我目前正在使用MySQL,但考虑转移到SQL Server,所以我希望查询适合两者.此外,如果您使用的是无法在SQLite上运行的任何内容,请提及它,谢谢.

sql

51
推荐指数
6
解决办法
4万
查看次数