我想对以下两行中数据进行选择:
aaa 888
bbb 888
ccc 888
ddd 888
xxx 903
bbb 941
rrr 953
kkk 981
当第二列为888时,对第一列只随机选择出一条来,这条SQL怎么写啊。
结果为:
bbb 888(随机生成)
xxx 903
bbb 941
rrr 953
kkk 981

解决方案 »

  1.   

    select max(column1),column2 from table group by column2 
    这样行不行啊
      

  2.   


    --当第二列为888时,对第一列只随机选择出一条来
    既然是随机,那么我可以私下设定rownum=1,取这条数据可以不?我得出以下2中结果,不知道可行不,电脑oracle没有启动,无法检测
    1,按照你的意思是分组,第二列只要是重复的,就只记录其中一条记录即可:
    select b.column1,a.column2  from  (select column2 from table1 group by column2) a
    inner join table1 b
    on a.column2=b.column22,不是分组,简单的第二列=888的时候,取其中一条记录
    select b.column1,distinct a.column2  from  table1 a
      

  3.   

    SQL> select * from ttt;C1         C2
    ---------- ----------
    aaa        888
    bbb        888
    ccc        888
    ddd        888
    xxx        903
    bbb        941已选择6行。SQL> select * from (
      2  select c1,c2 from ttt where c2='888' order by dbms_random.value)
      3  where rownum=1;C1         C2
    ---------- ----------
    ddd        888SQL>  select * from (
      2   select c1,c2 from ttt where c2='888' order by dbms_random.value)
      3   where rownum=1;C1         C2
    ---------- ----------
    bbb        888SQL> select * from (
      2  select c1,c2 from ttt where c2='888' order by dbms_random.value)
      3  where rownum=1;C1         C2
    ---------- ----------
    aaa        888
    用dbms_random包
      

  4.   

    OPER@tl> select * from test;AAA           BBB
    ------ ----------
    aaa           888
    bbb           888
    ccc           888
    xxx           903
    bbb           941
    rrr           951已选择6行。OPER@tl> select * from test
      2  where bbb<>888
      3  union all
      4  select * from (select * from test where bbb=888
      5  order by dbms_random.value)
      6  where rownum=1
      7  /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    bbb           888OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    aaa           888OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    bbb           888OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    bbb           888OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    aaa           888OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    aaa           888
    OPER@tl> /AAA           BBB
    ------ ----------
    xxx           903
    bbb           941
    rrr           951
    ccc           888OPER@tl>