高手进,请教一个sql语句(获得答案马上接贴)~~~~

hudingchen 2006-09-22 01:15:19
ID name pass
1 dd 123
2 aa 123
3 bb 123
6 cc 123
表名:userid.ID是主键,自动递增的;name和pass都是文本类型的。
如果往表里插入一条数据,插入成功的话,id是从7开始的,现在要做的是插入一条数据后,按照id顺序插入,也就是ID=4,插入新数据;再插入的话从5开始。比如插入一条 name = 'ee',pass=123的数据后,结果如下:
ID name pass
1 dd 123
2 aa 123
3 bb 123
4 ee 123
6 cc 123
请用一条sql语句写,怎么写???
...全文
260 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudingchen 2006-09-22
  • 打赏
  • 举报
回复
感谢楼上的各位了,最后一个小问题,是谁把我的帖子给结了?????斑竹吗?
zhenjialong 2006-09-22
  • 打赏
  • 举报
回复
楼上正解
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
用VBA解决:
执行select min(gs) from (
select [id],(select count(*) from rr where a.[id]>=[id]) as gs from rr a)
where [id]<>gs
后,判断MIN(GS)有无内容,如有,执行以下SQL语句
INSERT INTO TT
select min(gs),'FF','PASS' from (
select [id],(select count(*) from rr where a.[id]>=[id]) as gs from rr a)
where [id]<>gs
如无,则直接INSERT。
changechange 2006-09-22
  • 打赏
  • 举报
回复
我来告诉你正确答案

自动编号类型的字段作用不是给你用来连号的,因此你的问题无法用一句 SQL 语句解决


自动编号的字段在删除记录后编号不连续《表》
http://access911.net/index.asp?u1=a&u2=75FAB31E17DC


误删除了某条含有自动编号字段的记录?怎么恢复?《表》
http://access911.net/index.asp?u1=a&u2=74FAB71E1BDC







--911--





--911--
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
SELECT min(gs), 'FF', 'PASS'
FROM (select [id],(select count(*) from rr where a.[id]>=[id]) as gs from rr a)
WHERE [id]<>gs;
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
ID不是插入的,是数据库自动添加的
当然知道,用VBA解决:
INSERT INTO TT
select min(gs),'FF','PASS' from (
select [id],(select count(*) from rr where a.[id]>=[id]) as gs from rr a)
where [id]<>gs
OracleRoob 2006-09-22
  • 打赏
  • 举报
回复
你要的是追加SQL语句?
hudingchen 2006-09-22
  • 打赏
  • 举报
回复
还是不对,可能是我没把问题说清楚?ID不是插入的,是数据库自动添加的,如,
ID name pass
1 dd 123
2 aa 123
3 bb 123
6 cc 123
我插入一个name=ff,pass=123,
结果为
ID name pass
1 dd 123
2 aa 123
3 bb 123
4 ff 123
6 cc 123
目前还没有正确答案。。。
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
用我的4条SQL语句,应该是最简单的方法
SELECT * INTO NEWTABLE FROM TT
DELETE FROM TT
alter table TT alter [ID] counter(1,1)
INSERT INTO TT([name],[Pass]) SELECT ([name],[Pass]) FROM NEWTABLE
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
得出最小缺号,这个问题不能用一条SQL解决
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
select min(gs) from (
select [id],(select count(*) from rr where a.[id]>=[id]) as gs from rr a)
where [id]<>gs
OracleRoob 2006-09-22
  • 打赏
  • 举报
回复
最开始写错了,不用加1。

OracleRoob 2006-09-22
  • 打赏
  • 举报
回复
这个语句只是查询最小的一个需要补漏的ID,你插入一条ID=4的之后,找到的就是5。


如果仅仅找缺号,使用如下SQL语句:

--如果表中ID唯一,可以使用如下语句找到新添加的ID值:

select top 1 Cnt as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt
order by Cnt


--或

select Min(Cnt) as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt
hudingchen 2006-09-22
  • 打赏
  • 举报
回复
to:wangtiecheng(不知不为过,不学就是错!)
我试了一下你的答案,好像不对,结果都是
新的id
5
是什么问题?
OracleRoob 2006-09-22
  • 打赏
  • 举报
回复
如果仅仅找缺号,使用如下SQL语句:

--如果表中ID唯一,可以使用如下语句找到新添加的ID值:

select top 1 Cnt+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt
order by Cnt


--或

select Min(Cnt)+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt

wwwwb 2006-09-22
  • 打赏
  • 举报
回复
实际上你的问题是找到具体缺多少号,用SQL不能做到,用VBA可以。
OracleRoob 2006-09-22
  • 打赏
  • 举报
回复
没看到是自动递增的,晕!

ID是自动递增,无法追加中间的ID。

必须通过其它方式处理。
wwwwb 2006-09-22
  • 打赏
  • 举报
回复
NO,不行
TRY:
SELECT * INTO NEWTABLE FROM TT
DELETE FROM TT
alter table TT alter [ID] counter(1,1)
INSERT INTO TT([name],[Pass]) SELECT ([name],[Pass]) FROM NEWTABLE
OracleRoob 2006-09-22
  • 打赏
  • 举报
回复

--不使用临时表

--如果表中ID唯一,可以使用如下语句找到新添加的ID值:

select top 1 Cnt+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt
order by Cnt


--或

select Min(Cnt)+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt


OracleRoob 2006-09-22
  • 打赏
  • 举报
回复


--如果表中ID唯一,可以使用如下语句找到新添加的ID值:

select top 1 Cnt+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt
order by Cnt


--或

select Min(Cnt)+1 as 新的ID
from (SELECT T.*,(select count(*) from 表名 where id<=T.ID) as Cnt FROM 表名 T) tt
where id<>Cnt


加载更多回复(1)

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧