SQL语句update问题 关于MSSQL
现在有一张表,某个字段
1
2
3
5
6
9
10
假如我新插入一个值,如果插入的是3,则原来的3,变成4!
而5、6、7不变,最后所得序列是1,2,3,4,5,6,9,10
假如我新插入一个值是4,则原来的值都不变,因为没有存在4,所以可以直接插入,最后新序列是1,2,3,4,5,6,9,10
假如我新插入一个5,则原来的5和6自动加1,而9,10不变,因为不存在8,
最后所得序列是1,2,3,5,6,7,9,10
请问这样的SQL语句怎么实!现,要思想及可实现的过程,其中这个字段的值是不确定的,但是可以查询得到!
回答好的可以再加分
补充:我就是要实现这样的UPDATE功能,而不是单单找出连号这么简单,呵呵
就是按条件来UPDATE,
答案:if exists(select * from table where fiele = @id)
begin
...
end
else
begin
...
end
如下SQL可以查出来连号,资料来自cnoug
有一个表结构,
fphm,kshm
2014,00000001
2014,00000002
2014,00000003
2014,00000004
2014,00000005
2014,00000007
2014,00000008
2014,00000009
2013,00000120
2013,00000121
2013,00000122
2013,00000124
2013,00000125
(第二个字段内可能是连续的数据,可能存在断点。)
怎样能查询出来这样的结果,查询出连续的记录来。
就像下面的这样?
2014,00000001,00000005
2014,00000009,00000007
2013,00000120,00000122
2013,00000124,00000125
ITPUB上的朋友给出了一个非常巧妙的答案:
SQL> SELECT b.fphm, MIN (b.kshm) Start_HM, MAX (b.kshm) End_HM
2 FROM (SELECT a.*, TO_NUMBER (a.kshm - ROWNUM) cc
3 FROM (SELECT *
4 FROM t
5 ORDER BY fphm, kshm) a) b
6 GROUP BY b.fphm, b.cc
7 /
FPHM START_HM END_HM
---------- -------- --------
2013 00000120 00000122
2013 00000124 00000125
2014 00000001 00000005
2014 00000007 00000009
其他:厉害,我还没见过这样的,等有结果了告诉我一声,我也学习下 @declare @i int,
@count int
if @i=3
begin
set @count=select count(*) from ta lie='3'
if @count>=1
begin
update ta set lie='4' where lie=@i
end
end
if @i=4
begin
set @count=select count(*) from ta lie='4'
if @count=0
begin
insert into ta(lie) values(@i)
end
end
if @=5
begin
set @count=select count(*) from ta lie='8'
if @count=0
begin
update ta set lie=lie+1 where lie='5' or lie='6'
end
end
按照你的意思只能写成这个样子了,你找按照这个去琢磨吧。相信只要能描述,就能写出来,只是我真没看懂你这里面有规律,,所以。。 好象楼上都没回答全嘛,这个问题感觉要用存储过程甚至触发器来做哟,关注完整答案
上一个:关于mssql的一个问题,在线急等!
下一个:求MSSQL语句,追加分