A        B        C
5105 洗澡 洗洗准备睡了,稍后回复。
5110 休假 呼呼中……呼呼中……呼呼中……
5110 休假 蓝天清风,跋山涉水,信号中断,有事留言……
5110 休假 本人已进入无人接听的时段、地段……骚扰度假中……
5110 休假 中午不睡,下午崩溃。勿扰……
5110 休假 您排打的用户休假区,中国移动信号暂时无法覆盖,静候回复吧……
5102 开车 安全行驶,人人有责
5104 运动 生命在于运动
5106 上课 上课时间到,稍后再联系
5108 午休 嘘!别吵偶,让偶休息一下
5109 夜晚 每个夜晚来临的时候,孤独总在我左右
5102 开车 常在路上走,生怕会烂鞋。
5103 开会 会议进行中以上为我的查询结果,我想要A列中有相同值的只查出一行,请各位高手指点该如何做?

解决方案 »

  1.   


    select row_number() over (partition by a order by a) rn,
           b,c
    from table_name
    where rn=1
      

  2.   

    select * from test_01 a where a.rowid = (select max(rowid) from test_01 b where a.a= b.a)
      

  3.   


    --不知道下面的结果是不是你想要的
    with t as(
         select 5105 a,'洗澡' b,'洗洗准备睡了,稍后回复。' c from dual union all
         select 5110,'休假','呼呼中……呼呼中……呼呼中……' from dual union all
         select 5110,'休假','蓝天清风,跋山涉水,信号中断,有事留言……' from dual union all
         select 5110,'休假','本人已进入无人接听的时段、地段……骚扰度假中……' from dual union all
         select 5110,'休假','中午不睡,下午崩溃。勿扰……' from dual union all
         select 5110,'休假','您排打的用户休假区,中国移动信号暂时无法覆盖,静候回复吧……' from dual union all
         select 5102,'开车','安全行驶,人人有责' from dual union all
         select 5104,'运动','生命在于运动' from dual union all
         select 5106,'上课','上课时间到,稍后再联系' from dual union all
         select 5108,'午休','嘘!别吵偶,让偶休息一下' from dual union all
         select 5109,'夜晚','每个夜晚来临的时候,孤独总在我左右' from dual union all
         select 5102,'开车','常在路上走,生怕会烂鞋。' from dual union all
         select 5103,'开会','会议进行中' from dual)
    select tb.a,tb.b,tb.c
    from (
         select row_number() over (partition by a order by a) rn,
               a,b,c
                from t) tb
    where rn=1
    /
             A B    C
    ---------- ---- ------------------------------------------------------------
          5102 开车 安全行驶,人人有责
          5103 开会 会议进行中
          5104 运动 生命在于运动
          5105 洗澡 洗洗准备睡了,稍后回复。
          5106 上课 上课时间到,稍后再联系
          5108 午休 嘘!别吵偶,让偶休息一下
          5109 夜晚 每个夜晚来临的时候,孤独总在我左右
          5110 休假 呼呼中……呼呼中……呼呼中……
      

  4.   


    select tb.a,tb.b,tb.c
    from (
         select row_number() over (partition by b order by b) rn,
                a,b,c
         from t) tb
    where rn=1
    /