sqlid连续
① sql 查出连续4天没有数据 的id
SELECT id FROM 表
WHERE 某一字段 IS null
GROUP BY id
HAVING datediff( day, min(日期), max(日期) ) >= 3
② SQL数据库中查询连续编号的的数据。
DECLARE@T1table(UserIDint,[name]nvarchar(50),numint);
insertinto@T1(UserID,[name],num)values(1001,'a',8)
insertinto@T1(UserID,[name],num)values(1002,'b',6)
insertinto@T1(UserID,[name],num)values(1003,'c',8)
insertinto@T1(UserID,[name],num)values(1004,'a',8)
insertinto@T1(UserID,[name],num)values(1005,'b',8)
select*from@t1
selecta.*from
(selectUserID,[name],[num]from@t1)ajoin
(selectUserID,[name],[num]from@t1)bona.UserID<b.UserIDanda.UserID+1=b.UserID
anda.num=b.num
groupbya.userid,a.[name],a.[num]
得到结果:1003c8
1004a8
③ 如何用SQL 来核查序号是否连续
给你提供一个参考:
declare @num1 int,@num2 int,@i int,@row int
select @row=count(*) from 表名
set @i=1
while(@i<=@row)
begin
select @num1=序号 from 表名 where 序号=@i
select @num2=序号 from 表名 where 序号=@i+1
if(@num2-@num1<>1)
begin
print(cast(@num1 as char)+' 与 '+cast(@num2 as char)+'不连续');
break;
end
set @i=@i+1
end
④ sql大神 现身吧,求教ID重排使其连续
CREATETABLETestABC(
FIDINT,
FNAMECHAR(2)
);
INSERTINTOTestABC
SELECT1,'a1'FROMalUNIONALL
SELECT1,'a2'FROMalUNIONALL
SELECT1,'a3'FROMalUNIONALL
SELECT2,'b1'FROMalUNIONALL
SELECT2,'b2'FROMalUNIONALL
SELECT2,'b3'FROMalUNIONALL
SELECT4,'d1'FROMalUNIONALL
SELECT4,'d2'FROMalUNIONALL
SELECT8,'f1'FROMalUNIONALL
SELECT8,'f2'FROMalUNIONALL
SELECT10,'e1'FROMalUNIONALL
SELECT10,'e2'FROMalUNIONALL
SELECT10,'e3'FROMal;
--先查询,模拟一个预期的结果.
SELECT
FID,FNAME,
DENSE_RANK()OVER(ORDERBYFID)ASNEW_FID
FROM
TESTABC;
FIDFNAMNEW_FID
------------------------
1a11
1a21
1a31
2b12
2b22
2b32
4d13
4d23
8f14
8f24
10e15
FIDFNAMNEW_FID
------------------------
10e25
10e35
已选择13行。--实际去更新.
UPDATE
TestABC
SET
FID=(SELECTNEW_FIDFROM
(SELECT
FID,FNAME,
DENSE_RANK()OVER(ORDERBYFID)ASNEW_FID
FROM
TESTABC
)NewTestABCWHERETestABC.FID=NewTestABC.FIDANDTestABC.FNAME=NewTestABC.FNAME);
--核对更新结果.
SELECT*FROMTestABC;
FIDFNAM
--------------
1a1
1a2
1a3
2b1
2b2
2b3
3d1
3d2
4f1
4f2
5e1
FIDFNAM
--------------
5e2
5e3
已选择13行。
⑤ SQl数据库自动编号(连续)
假如你的原来的表tb有
id,name,address三列
其中id是自动增长列,
删除其中若干行以后,
你可以这样啊
创建存储过程
create proc getTempTable
as
begin
declare @temp table
(
id int identity(1,1),
name varchar(20),
address varchar(20)
)
insert @temp
select name, address from tb
select * from @temp
end
这样你就可以得到一个ID连续的新表了
⑥ 用sql语句出现都表中ID出现多次
思路大概是这样:
实用ltrim或者rtrim函数去掉左边或右边符合条件的字符。
如果是oracle环境,看你这里都是字母在前数字在后的格式,假设旧列叫 col_old,新的字母列是col_str,新的数字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))
sql server 有没有这个函数不知道了,反正这是一个思路吧。供参考而已
sql没有这个东西,那我就给你提个思路吧,语句你自己写了,我没有环境。
用ASCII码和sql的ltrim和rtrim来做,你需要循环找到从左起每个字符都是ASCII
⑦ sql查找数量是否连续
1.先找出最小和最大id
selectmin(id),max(id)fromtable
2.然后
selectcount(*)fromtable
比较一下最大ID与最小ID的差,是不是和行数相等就可以
⑧ SQL更新原有ID并指定丛20001开始自动生成新的序号连续数字ID
你好的!
你可以这么做啊,先把不要的数据删了!
完后按照行号+20000的方式更新数据!
行号的生成:row_number()over(order by ID asc)
有什么疑问请您追问!
望采纳!
⑨ sql 连续行中,code相同,ID连续,上下行数值相同的多行,D列取相同数值行最上行的上一行的数值
这个比较复杂:(
WITHcteAS(--找出分组的最小行号
SELECT*
,Min(ID)OVER(PARTITIONBYCode,数值)ASMinID--添加1列,使用开窗函数
FROMTableX
)
SELECTID,Code,数值
,X.数值AS[D]
FROMcte
--然后关联原表
LEFTJOINTableXXONcte.Code=X.Code
ANDcte.数值=X.数值
ANDcte.MinID=X.ID+1