日期:2014-05-16  浏览次数:20924 次

如何得到数据库中不存在的记录的字段值
数据库中有三条记录,其中有一个字段值是int型,分别是1,3,5.现在要得到从1-5中没有使用的第一个值(按从小到大排列)。如果存在记录,我们可以知道是2.
使用SQL语句如何得到这个没有使用的int型值呢?

------解决方案--------------------
SQL code
SELECT TOP 1 NUMBER 
FROM MASTER..SPT_VALUES 
WHERE TYPE='P' AND NUMBER
 BWETEEN (SELECT MIN(ID) FROM TB) 
AND (SELECT MAX(ID) FROM TB) ORDER BY NUMBER ASC

------解决方案--------------------
查断号 N多
------解决方案--------------------
SQL code
IF OBJECT_ID('TEST') IS NOT NULL
  DROP TABLE TEST
GO
CREATE TABLE TEST 
(
ID int,
COL0 REAL,
)

INSERT TEST VALUES(1,1)
INSERT TEST VALUES(3,1)
INSERT TEST VALUES(5,1)

;WITH T AS
(
    SELECT RN=ROW_NUMBER()OVER(ORDER BY GETDATE()),*
    FROM TEST
)
SELECT TOP 1 a.RN 
FROM T A 
    LEFT JOIN T B ON A.RN=B.ID 
WHERE B.ID IS NULL
/*
RN
--------------------
2

(1 行受影响)

*/

------解决方案--------------------
探讨
SQL code
IF OBJECT_ID('TEST') IS NOT NULL
DROP TABLE TEST
GO
CREATE TABLE TEST
(
ID int,
COL0 REAL,
)

INSERT TEST VALUES(1,1)
INSERT TEST VALUES(3,1)
INSERT TEST VALUES(5,1)

;WITH T……

------解决方案--------------------
探讨
数据库中有三条记录,其中有一个字段值是int型,分别是1,3,5.现在要得到从1-5中没有使用的第一个值(按从小到大排列)。如果存在记录,我们可以知道是2.
使用SQL语句如何得到这个没有使用的int型值呢?

------解决方案--------------------
探讨
是在ACCES数据库中,不是在SQLSEREVR中,改如何写这个SQL语句

------解决方案--------------------
探讨
是在ACCES数据库中,不是在SQLSEREVR中,改如何写这个SQL语句

------解决方案--------------------
SQL code
select top 1 一个字段+1
from 数据库中有三条记录 a
where 一个字段+1 not in (select 一个字段 from 数据库中有三条记录)
order by 1

------解决方案--------------------
也可以参考用VBA的方法,改编号为你的字段名
Public Function M_Find空编号(表名 As String, 起始号)
Dim rs As New ADODB.Recordset
ts = "select * from " & 表名 & " where 编号="
编号 = 起始号
msql = ts & 编号
rs.Open msql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do While Not rs.EOF
rs.Close
编号 = 编号 + 1
msql = ts & 编号
rs.Open msql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Loop
rs.Close
Set rs = Nothing
M_Find空编号 = 编号
End Function
------解决方案--------------------
引用一个字段+1 是什么意思?
数据库中有三条记录 a:指的是数据库表名?a指的是什么?