因项目需要,要实现如下功能,有主从两张表, 现在要实现如下功能,用户发送一些数据,数据库需要判断这些数据在10分钟内是否已经发送过了,例子如下 假设从表字段名有 EXT1 EXT2 EXT3 EXT4 四个字段 用户发送了
1 A B C D
2 E F G H
3 W X Y Z
三条要求插入从表的信息
数据库需要判断的是从表中是否存在和这3条数据重复的数据,即每个字段以及顺序或者从表中一组数据数量不同也判断为不同
如果不存在则插入这三条数据,存在则返回已有数据求各位大侠帮忙提供一个思路 谢谢了
1 A B C D
2 E F G H
3 W X Y Z
三条要求插入从表的信息
数据库需要判断的是从表中是否存在和这3条数据重复的数据,即每个字段以及顺序或者从表中一组数据数量不同也判断为不同
如果不存在则插入这三条数据,存在则返回已有数据求各位大侠帮忙提供一个思路 谢谢了
1 A B C D
2 E F G H
3 W X Y Z
与
1 A B C D
3 W X Y Z
2 E F G H
也为不同?
insert into @input select 1,'A','B','C','D'
insert into @input select 2,'E','F','G','H'
insert into @input select 3,'I','J','K','L'declare @base table(col1 varchar(10),col2 varchar(10),col3 varchar(10),col4 varchar(10))insert into @base select 'W','X','Y','Z'
insert into @base select 'H','T','S','D'
insert into @base select 'E','F','G','H'
insert into @base select 'A','B','C','D'
insert into @base select 'W','X','Y','Z'
insert into @base select 'E','F','G','H'
insert into @base select 'I','J','K','L'
declare @str1 varchar(1000), @str2 varchar(1000)
select @str1=isnull(@str1,'')+'#'+col1+','+col2+','+col3+','+col4 from @input order by id
select @str2=isnull(@str2,'')+'#'+col1+','+col2+','+col3+','+col4 from @base order by row_number() over (order by getdate())if Charindex(@str1,@str2)>0
print 'exists'
else
print 'not exists'
可以参考MSDN上的SERVER BROKER。
不过这样你的表结构等会改变。
——要实现这些类似消息队列的问题,应该用SERVER BROKER ,在ORACLE里面应该是ADVANCE QUENCE吧
select count(字段A) from tb
where 时间字段 between getdate() and dateadd(minute,10,getdate()) group by 字段A如果存在数据,则说明十分钟内A有发送过跟A字段相同的数据。