查询前 查询后
NAME AGE ADRESS NAME AGE ADRESS
小明 27 大连 小明 27 大连
小张 28 新疆 小张 28 新疆
李东 27 新疆
王浩 28 大连 请参考上表,有两个表分别是查询前和查询后的表(这里假设查询前表为table1,查询后的表为table2)。
想要实现的是:查询数据返回原数据表的所有字段,限制条件是某一列重复的行只返回第一行。如上表所示,返回所有字段,限制条件为ADRSS列重复的行只返回第一行。
实现该功能的具体SQL语句是什么了?谢谢!

解决方案 »

  1.   


    谢谢 昨天那个表发的时候有点问题,表如下:这只是为了理解题意简单的做了一个表,但结构一样,只不过原数据表数据量很大。
    意思就是返回一个表的所有字段,field2有重复的行,使其返回的只是第一行。field1和field2是一一对应的,field2内容不同对应的field1也不同,如果field2内容相同,那么field1内容也对应相同。表里没有主键。这个有点类似于 select distince field2 from 表,但它只能返回field2这一列,而我需要返回表中的所有列
      

  2.   

    select field1,field2,field3,field4
    from (
    select *,row_number() over(partition by field1,field2 order by getdate())rn
    from table1
    )a
    where a.rn=1