我有一张表Test 有字段:ColA,ColB,ColC,ColD我怎么每次取数据都能把这表中数据最中间的一条数据取出来:如果是2:条记录,那就取第2条
colA    colB         colC    ColD
351     暂无效果     5       0
85      耳目         3       0取出来的是:85      耳目         3       0
如果是3:条记录,那就取第2条
colA    colB         colC    ColD
351     暂无效果     5       0
85      耳目         3       0
89      群众反映     3       0取出来的是:85      耳目         3       0如果是4:条记录,那就取第3条
colA    colB         colC    ColD
351     暂无效果     5       0
85      耳目         3       0
89      群众反映     3       0
86      特情         3       0取出来的是:86      特情         3       0如果是5:条记录,那就取第3条
colA    colB         colC    ColD
351     暂无效果     5       0
85      耳目         3       0
89      群众反映     3       0
86      特情         3       0
87      信息员       3       0取出来的是:86      特情         3       0
这条SQL怎么写啊,如果真的不好设现,大家给我写一个,都取第二条的SQL

解决方案 »

  1.   

    取是可以取的
    但是不明白lz的意思
    为何是中间的那条,不能先排序吗
    select * from 
    (select t.*, rownum as num from Test t)
    where num=ceil((select count(*) from Test)/2)
      

  2.   

    如果是4:条记录,那就取第3条 
    colA    colB         colC    ColD 
    351     暂无效果     5       0 
    85      耳目         3       0 
    89      群众反映     3       0 
    86      特情         3       0 取出来的是:86      特情         3       0 =================
    第三条不是 89      群众反映     3       0  吗?
      

  3.   

    楼主的意思是colA的数值在中间,并且偶数时去大的那个
      

  4.   

    select colA  ,  colB ,  colC ,  ColD  
    from (
              select rounum num, t.* 
              from Test t
              )
    where num = (num/2+1)