因项目需要,要实现如下功能,有主从两张表, 现在要实现如下功能,用户发送一些数据,数据库需要判断这些数据在10分钟内是否已经发送过了,例子如下 假设从表字段名有 EXT1 EXT2 EXT3 EXT4  四个字段 用户发送了 
1 A B C D  
2 E F G H
3 W X Y Z 
三条要求插入从表的信息
数据库需要判断的是从表中是否存在和这3条数据重复的数据,即每个字段以及顺序或者从表中一组数据数量不同也判断为不同
如果不存在则插入这三条数据,存在则返回已有数据求各位大侠帮忙提供一个思路  谢谢了

解决方案 »

  1.   


    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
    也为不同?
      

  2.   

    --或许全部串字串串起来,也可以比比declare @input table(id int, col1 varchar(10),col2 varchar(10),col3 varchar(10),col4 varchar(10))
    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'
      

  3.   

    唉~~你这个问题应该用SERVER BROKER来实现吧,而不要自己去判断——
    可以参考MSDN上的SERVER BROKER。
    不过这样你的表结构等会改变。
    ——要实现这些类似消息队列的问题,应该用SERVER BROKER ,在ORACLE里面应该是ADVANCE QUENCE吧
      

  4.   


    select count(字段A) from tb 
    where 时间字段 between getdate() and dateadd(minute,10,getdate()) group by 字段A如果存在数据,则说明十分钟内A有发送过跟A字段相同的数据。