现有三个问题,要请教高手
问题1。
一个学生表(id,name,score,flag)分别为id,名字,分数,标识
我要实现的是如何查出第一个flag不连续的值
比如学生表中的内容是这样的
1 aa 80 1
2 bb 64 2
3 cc 59 3
4 dd 80 5
5 ee 80 6
从id=4时 flag就不连续了 我要查出第一个不连续的值 也就是说flag=5,该怎么用sql语句实现呢?问题2。
现在有一个表tb(id,value) 我还有一串字符串id:value格式的(比如说为1:203,2:300,3:98)我要将这个字符串解析出来将值分别插入到tb表中,用sql语句怎么实现啊?问题3
现有一个表table 表名为pages(id,url,title,body)里面储存了很多的网页,网页的url地址,title和网页的内容,然后给一个关键字,你用一个sql查询将url匹配的排在最前,title匹配的其次,body匹配的最后,没有任何字段匹配的不返回
用sql语句怎么实现呢?
谢谢高手了 

解决方案 »

  1.   

    --1
    select flag+1
    from tb t
    where not exists(select 1 from tb where flag=t.flag+1)
      

  2.   

    --1
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([id] int,[name] varchar(2),[score] int,[flag] int)
    insert [tb]
    select 1,'aa',80,1 union all
    select 2,'bb',64,2 union all
    select 3,'cc',59,3 union all
    select 4,'dd',80,5 union all
    select 5,'ee',80,6
     
    select flag
    from tb t
    where not exists(select 1 from tb where flag=t.flag-1)
    and exists(select 1 from tb where flag<t.flag)/**
    flag
    -----------
    5(1 行受影响)
    **/