我正在尝试创建查询以查找最小的未使用数字。我之前使用的查询从数据库中获取了最大数+1,但我想更改此查询以获得最小的未使用数字。
要获得最大数字+1,请使用此代码(有效):
public void getType()
{
String query = "SELECT Max(IncIncidentType) FROM IncIncidentType;";
cmd.Connection = SqlServerConnection.sqlConnection;
cmd.CommandText = query;
SqlServerConnection.sqlConnection.Open();
String maxTypeId = cmd.ExecuteScalar().ToString();
SqlServerConnection.sqlConnection.Close();
if (maxTypeId == "")
{
incidentTypeId.Text = "0";
}
else
incidentTypeId.Text = (Convert.ToInt32(maxTypeId) + 1).ToString();
}
我找到了一些可能的答案,比如
SELECT TOP 1
t1.Id + 1
FROM
table t1
WHERE
NOT EXISTS(SELECT * FROM table t2 WHERE t2.Id = t1.Id + 1)
ORDER BY
t1.Id
当我尝试将此查询更改为适用于我的数据库时,我得到一个错误的ID(我得到的ID已经在使用中)。如何使此查询适用于我的数据库?
这里有我的数据库结构的一些图片
http://i59.tinypic.com/1jxjdy.png
在下图中的情况下,我想回到0。