当前位置:首页 » 编程语言 » sql识别连续编号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql识别连续编号

发布时间: 2023-08-12 12:47:04

‘壹’ sql筛选日期连续的记录

select empid as 员工编号,workdate as 旷工日期一,dateadd(day,1,workdate) as 旷工日期二 from table t1
where
exists
(select * from table where empid=t1.empid and datediff(day,t1.workdate,workdate)=1)
and not exists
(select * from table where empid=t1.empid and datediff(day,t1.workdate,workdate)=2)
and not exists
(select * from table where empid=t1.empid and datediff(day,t1.workdate,workdate)=-1)
存在大一天的数,但不存在大两天的数,也不存在小一天的数,就是正确结果了

‘贰’ sql server 怎么查到编号连续的数据

用条件啊 翻倍的 就power(2,n) n是2的n次方...

‘叁’ sql 连续编号

因为你的字段全敬唤或是数字,所以可以用max()函数来取最链迹大值,然后转为int,加1,再转为亮伍char(6). 如果你觉得6位太长,可以把下面代码中的6改称你要的长度。

先创建一个自定义函数:
create function f_getMaxCode()
returns varchar(6)
as
begin
declare @maxid int
declare @maxcode varchar(6)
set @maxcode=''
select @maxid=Cast(isnull(max(bh字段名),0)+1 as int) from 表名
set @maxcode=cast(@maxid as varchar(6))
while len(@maxcode)<6
begin
set @maxcode='0' + @maxcode
end
return @maxcode
end

在insert的时候:
insert into 表名(bh字段名,....)
values(dbo.f_getMaxCode(),....)

‘肆’ sql怎么批量查询多个编号对应的数据

两个办法: 1.新建一张表 将这行bh列需要的数据 插入进去
2.用in(bh1,bh2,bh3,,......)

另外 你要显示查找不到的 我就建议 你用第一种方法 然后再用left join 用这列bh去连接
这样找不到的bh 就会显示null

‘伍’ 查询出一个表中所有具有重复序号的SQL语句

.使用临时表实现
sql的identity函数可以提供自增的序号,但只能用在带有into
table子句的select语句中,所以如果可以使用临时表的情况下可以使用这种实现方法。
eg:
select
identity(int,1,1)
as
seq,field1,field2,...,fieldn
into
tmptablename
from
srctablename;
select
*
from
tmptablename;
drop
table
tmptablename;

‘陆’ 怎么查询SQL中连续编号中间的断号

思路给你:

1、找到你的表中的连续编号的最小值。

2、找到你的表中的连续编号的最大值。

3、产生一个临时表,它的一个字段最小值到最大值连续产生记录。

4、找到临时表中的“那个字段中”的“记录”不在“你的表中”的“连续编号”中存在的所有记录。


参考代码如下:

--初参条件针对对象表LS_bas1数据库里的TA1表
--查TA1表中ID号不连续缺少的记录

--定义三个变量最小记录、最大记录、记录搜索用
DECLARE@MINIDINT,@MAXIDINT,@GOINTINT

--从TA1表中取得ID最小的、ID最大的记录
SELECT@MINID=MIN(ID),@MAXID=MAX(ID)FROMLS_bas1.DBO.TA1

--从最小记录开始循环向临时表#LSTAB里追加记录,以产生连续的GOID记录
SET@GOINT=@MINID
SELECT@GOINTASGOIDINTO#LSTAB
WHILE@GOINT<@MAXIDBEGIN
SET@GOINT=@GOINT+1
INSERTINTO#LSTAB(GOID)VALUES(@GOINT)
END

--将#LSTAB中GOID有,与TA1表ID中没有的记录找出来,就是你要的
SELECT*FROM#LSTAB
WHEREGOIDNOTIN(
SELECTIDFROMLS_bas1.DBO.TA1
)
ORDERBYGOID

--最后,好习惯,清理中间的临时表
DROPTABLE#LSTAB

‘柒’ 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数据库中查询连续编号的的数据。


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