我有一个表里面有性别,分别是1,2。
我希望我查询出来的数据可以交替显示
原始数据
    id      sex
    1        1
    2        1
    3        1
    4        1
    5        2
    6        1
     7       2
我希望显示的结果是
    
  id        sex
   1         1
   5         2
   2         1
   7          2 
   3         1
   4         1
   6         1请高手帮帮忙

解决方案 »

  1.   

    select rr,sex
    from
    (
    select rr,sex,rownum rnn
    from
    (
    select rr,sex
    from 
    (
    select 1 rr,1 sex  from dual
    union
    select 2,1  from dual
    union
    select 3,1  from dual
    union
    select 4,1  from dual
    union
    select 5,2  from dual
    union
    select 6,1  from dual
    union
    select 7,2  from dual
    )
    order by sex
    )
    where sex =1unionselect rr,sex,rownum
    from
    (
    select rr,sex
    from 
    (
    select 1 rr,1 sex  from dual
    union
    select 2,1  from dual
    union
    select 3,1  from dual
    union
    select 4,1  from dual
    union
    select 5,2  from dual
    union
    select 6,1  from dual
    union
    select 7,2  from dual
    )
    order by sex
    )
    where sex =2
    )
    order by rnn,sex
      

  2.   

    sql语句应该是不具备这种排序功能的,除非你另外添加一个字段,然后每次添加的时候进行一次自定义排序!
      

  3.   

    oracle语法说明:
    1:获取记录集,该记录集条件为男性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
    2:获取记录集,该记录集条件为女性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
    3:将1、2获取的记录集通过union联合
    4:由3记录集获取所需记录,并按照“rownum””sex“排序
      

  4.   

    select rr,sex 
    from 

    select rr,sex,rownum rnn 
    from 

    select rr,sex 
    from 

    select 1 rr,1 sex  from dual 
    union 
    。。
    ---------
    这种写法肯定不行的,如果数目上百了?这样弄是很没效率且不通用的。要不你就分别先查询男和女的然后利用程序依次填充到一个新的datatable里面去!
      

  5.   

    oracle语法 说明: 
    1:获取记录集,该记录集条件为男性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号) 
    2:获取记录集,该记录集条件为女性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号) 
    3:将1、2获取的记录集通过union联合 
    4:由3记录集获取所需记录,并按照“rownum””sex“排序
    -------
    前面都是废话,“并按照“rownum””sex“排序”又没说清楚,仅仅排序就行了?
      

  6.   

    楼上的,你彪么?什么他们的叫废话?
    你说的那屁话不是废话?会说人话你就放声,不会说就滚2B车车的谁叫你一个记录一个记录union的?
    看不懂
    select 1 rr,1 sex  from dual 
    union 
    select 2,1  from dual 
    union 
    select 3,1  from dual 
    union 
    select 4,1  from dual 
    union 
    select 5,2  from dual 
    union 
    select 6,1  from dual 
    union 
    select 7,2  from dual 
    是用来替换临时表的么?为了帮LZ答疑我在自己数据库里创建一个表?我是不是闲大发了?山货,回去多看基本书再来B呲!2!!
      

  7.   

    分别先查询男和女的然后利用程序依次填充到一个新的datatable里面去
    ---
    可以先这样来弄!将所有男的放到一个datatable,所有女的放到另外一个datatable,然后遍历男的或者女的,对照着另外性格的datatable来填充到新的datatable
      

  8.   

    楼上的,你彪么? 什么他们的叫废话? 
    你说的那屁话不是废话? 会说人话你就放声,不会说就滚 2B车车的 谁叫你一个记录一个记录union的? 
    看不懂 
    select 1 rr,1 sex  from dual 
    union 
    select 2,1  from dual 
    union 
    select 3,1  from dual 
    union 
    select 4,1  from dual 
    union 
    select 5,2  from dual 
    union 
    select 6,1  from dual 
    union 
    select 7,2  from dual 
    是用来替换临时表的么? 为了帮LZ答疑我在自己数据库里创建一个表?我是不是闲大发了? 山货,回去多看基本书再来B呲! 2!!
    ---------------------
    对此也不做回复了,一点素质都没有,楼主自行选择咯。
      

  9.   

    因为数据量很大,还要用到存储过程分页,所以,我希望在数据库里的数据就可以按性别间隔排好,要不,感觉挺麻烦的。两个datatable我知道可以实现,我只是想看下能否用数据库就可以实现
      

  10.   

    select id,sex
    from
    (--记录集A
    select id,sex,rownum rn
    from mytemptable
    where sex = 1union--记录集B
    select id,sex,rownum rn
    from    mytemptable
    where sex = 2
    )
    order by rn,sexmytemptable 就是你存放记录的表你可以酌情根据需要,将“记录集A”"记录集B“按需要增加条件 较少数据数量,来提升展示效率建议你根据你DBMS,到相应板块去提问,效率高 回复“素质”也高,呵呵
      

  11.   

    1 首先你这样的显示本来就有点无理吧。
    2 用数据本身的sql来实现肯定会比较繁杂,一个是不利于调试和开发,二个是以后维护了?程序能尽量简单就简单。
    结论:建议你不要费精力实现这个要求了。
      

  12.   


    declare @temp table(id int  identity(1,1),sex int)declare @i int
    set @i=0
    while(@i<10)
    begin
    insert @temp(sex) values(@i%2+1)
    set @i=@i+1
    end
    --select * from @tempdeclare @tempG table(tempID int identity(1,2),id int,sex int)
    declare @tempB table(tempID int identity(2,2),id int,sex int)
    insert into @tempG(id,sex) select id,sex from @temp where sex=1
    insert into @tempB(id,sex) select id,sex from @temp where sex=2select id,sex from (select * from @tempG
    union all
    select * from @tempb) as tt order by tempID 
    笨方法!
      

  13.   

    用sql不是一个好的办法,用程序判断。
    使用两个容器分别将男和女的数据存储,然后交错往一个新的容器里面放。List<T> man=new List<T>();
    List<T> woman=new List<T>();
    List<T> data=new List<T>();
    for(int i=0;i<woman.count;i++){
       data.add(man[i]);
       data.add(woman[i]);
    }
    man=null;
    woman=null;这样做的前提是man 和woman的数量一致。