高手进,请教一个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语句写,怎么写???
...全文
290 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)
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系行仿真与实车验证。

7,730

社区成员

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

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