tcl1122 2010-10-27 18:08
浏览 333
已采纳

查询一张表中两个字段重复的数据并得到其主键?

 

希望各位路过的大侠 帮小弟一把。感激不尽

 

如何查询一张表中两个字段都重复的数据以及每组中的第一条数据的主键?
情况如下:
A表: a1 a2 a3  a4   都列

a1     a2            a3                  a4

1       m              n                   o

2       m              n                   k

3       j                k                   l

4       j                k                   o

5       s               s                   s

6       e               e                   g

 

 

要求:查询出A表中a2  a3两个字段同时重复的数据以及每组中的第一条数据的主键a1 结果示例:

a1    a2     a3  

1      m      n

3      j        k

 

 

(不知各位大侠能不能明白我的意思?)

 

对于重复的数据: select a2,a3 from A a  group by a2,a3  having count(a1)>=2

但分组后怎么同时把每组中第一条数据的a1也查出来,然后根据这a1查询出表中所有的数据。

 

 

  • 写回答

2条回答 默认 最新

  • 勤劳的小猿 2010-10-27 23:08
    关注

    不知道你用的是什么数据库,我这有我以前给一个也是提问题的朋友写的,测试可以不过是oracle的语句。
    [code="sql"]
    select t.a1,t.a2,t.a4 from (select a1,a2,a3,a4, row_number() over (partition by a2,a3 order by a1 asc) as num from a) t where num <2;
    [/code]
    在sql server中,如果要分组的话就那么分组字段就得显示。
    那你的数据如果在sql server中直接一个分组就搞定了。
    [code="java"]
    select min(id),a2,a3 from a group by a2,a3;
    [/code]
    如果不加min()的话不能执行,看不到id的。加上就ok了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料