select col_1,col_2,col_3,col_4
from tb_name
group by col_1

解决方案 »

  1.   

    try:
    select a.* from tbname a,
    (select max(rowid) from tbname b group by colA) t
    where a.rowid=t.rowid;
      

  2.   

    select col1,max(col2),max(col3)
    from table group by col1
      

  3.   

    select a.* 
    from table_name a,
         (select max(rowid) from table_name b group by col1) b
    where a.rowid = b.rowid;
      

  4.   

    每一条记录都会有一个rowid,独一无二的.
    所以只要找到rowid就可以了.
    所以: 
    select * from table_name where rowid in
    (select max(rowid) from table_name group by col1)
      

  5.   

    SELECT t.* FROM tablename t WHERE ROWID=(SELECT MIN(ROWID) FROM tablename WHERE tablename.col=t.col GROUP BY col)
      

  6.   

    换一种容易看懂的写法:select a.* 
      from tbname a 
     where a.rowid = (select max(rowid) 
                        from tbname b 
                       where a.col1=b.col1
                     )
      

  7.   

    select * from table 
      where rowid in (select max(rowid) from table group by cola,colb,colc,cold);
      

  8.   

    上面错了
    try:select * from table
        where rowid in (select max(rowid) from table group by cola);
      

  9.   

    既然除了第一个字段唯一,其余的数据无所谓,为什么要用到rowid呢?直接用
    select col1,max(col2),max(col3)............ from talbe_name
    group by col1不是很好吗?
    当然不一定是max,只要是聚合函数就可以了。
      

  10.   

    to armyyd(不会游泳的猫)如果是下面这样的情况呢AAAA  1OO  33.1  A
    AAAA  1O3  32.1  A
    AAAB  101  33.2  A
    AAAB  102  33.3  B
    那你的语句将会得到什么结果呢
      

  11.   

    select *
    from (
    select t.* ,row_number() over (partition by t.a order by t.b ) ty from table_name t) tt
    where tt.ty<2
      

  12.   

    回复人: qiaozhiwei(乔) ( ) 信誉:100 
    select col_1,col_2,col_3,col_4
    from tb_name
    group by col_1
    回复人: bzszp(SongZip) ( ) 信誉:149 
    try:
    select a.* from tbname a,
    (select max(rowid) from tbname b group by colA) t
    where a.rowid=t.rowid;
    _____________________________________________________________________________________
    上边两种方法都是错的, 第一个 不符合group by的用法   第二个 取不出rowid 。
      

  13.   

    回复人: bluelamb(bluelamb) ( ) 信誉:100 
    select col1,max(col2),max(col3)
    from table group by col1
    回复人: GerryYang(轻尘) ( ) 信誉:100 
    每一条记录都会有一个rowid,独一无二的.
    所以只要找到rowid就可以了.
    所以: 
    select * from table_name where rowid in
    (select max(rowid) from table_name group by col1)
    ————————————————————————————————————————————
    这两种方法 小弟已测试  可以达到目的!
      

  14.   

    使用一个row_number函数就好了.
    select col1,col2,col3,col4
    from (
       select col1,col2,col3,col4,
              row_number() over (partition by col1 order by rowid ) rn
       from table

    where rn = 1;
      

  15.   

    回复人: bluelamb(bluelamb) ( ) 信誉:100 
    select col1,max(col2),max(col3)
    from table group by col1
    回复人: GerryYang(轻尘) ( ) 信誉:100 
    每一条记录都会有一个rowid,独一无二的.
    所以只要找到rowid就可以了.
    所以: 
    select * from table_name where rowid in
    (select max(rowid) from table_name group by col1)
    ————————————————————————————————————————————
    这两种方法 小弟已测试  可以达到目的!----------
    第一种方法是不可以的,因为你取到的并不一定是原表中的一条记录.
      

  16.   

    回复人: jinshe5805_cn(逸风) ( ) 信誉:100 第一种方法是不可以的,因为你取到的并不一定是原表中的一条记录.__________________________________________________________________________________多谢 您说的对  俺欠考虑了   :)
      

  17.   

    回复人: jametong(jametong) ( ) 信誉:100 
    使用一个row_number函数就好了.
    select col1,col2,col3,col4
    from (
       select col1,col2,col3,col4,
              row_number() over (partition by col1 order by rowid ) rn
       from table

    where rn = 1;
    _____________________________________________________________________这个也是可以的!!
      

  18.   


    to armyyd(不会游泳的猫)如果是下面这样的情况呢AAAA 1OO 33.1 A
    AAAA 1O3 32.1 A
    AAAB 101 33.2 A
    AAAB 102 33.3 B
    那你的语句将会得到什么结果呢
    是欠考虑了。
    用通用的那种去除相同记录的办法就可以了。