【问题标题】:(VB.NET 2010) How to write an SQL query which selects the lowest unused number(VB.NET 2010)如何编写一个选择最低未使用数字的 SQL 查询
【发布时间】:2023-03-14 19:59:01
【问题描述】:

我正在尝试编写一个算法,该算法在运行时将遍历我的访问数据库中的一个表并找到未使用的最小数字 (=> 1)。为澄清起见,这是记录的 ID,如果我在访问权限内使用自动编号功能,我将无法执行所需的任务。

例如,如果我有 ID 为 1 和 3 的记录;该算法将检测到“2”,然后返回一个值 2,我以后可以使用它。

不幸的是,我没有任何可以提供的示例代码,但我使用的是 Microsoft Visual Studio 2010,并且我正在使用 Oledb 系统在 VB.NET 中进行编程,以提供与我的数据库的连接。

感谢您的帮助。

编辑:我正在考虑使用 SORT 查询,但我不知道我会跟进它。因此,虽然到目前为止它还很初级,但我可以从以下算法开始:

SELECT StudentID FROM Students
ORDER BY StudentID;

我想通过这样做我可以让用户自己找到一个 ID 然后设置它,但这可能会破坏我的应用程序提供一个用于跟踪学生数据的自动化系统的目的。

【问题讨论】:

  • 也许您正在寻找相同的解决方案:enter link description here
  • @Steven 是的,没错。当我事先研究时找不到那个问题。谢谢!

标签: sql vb.net ms-access oledb vb.net-2010


【解决方案1】:
select min(StudentID) + 1
from Students s1
where not exists (select 1 from Students s2
                  where s2.StudentID = s1.StudentID + 1)

【讨论】:

  • 我想问一下“t1”是什么意思,是指列名吗?
  • t1 和 t2 是表别名。 (为了区分这两个实例。)
  • 因此,如果我的列包含名为“StudentID”的 ID 和我的表“Students”,我将拥有select min(StudentID) + 1 from Students t1 where not exists (select 1 from Students t2 where t2.StudentID = t1.StudentID + 1)
  • 我看到了编辑,非常感谢。我 +1 了,但我的声望不够高,无法显示,所以我想我会写一封感谢信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多