如题,求助大虾!谢谢!在线盼回复。SQL

解决方案 »

  1.   

    select a,b from 表
    where a=b
    group by a,b
    having count(1)>=50
      

  2.   

    sc273607742,不好意思,应该是我说的问题不够清晰,有歧义。
    我的问题是:在一个表中,有多个字段,找到其中两个字段都相同的记录(是字段a=字段a且字段b=字段b,不是字段a=字段b),而且这样的记录要超过50条才算符合,,请问如何处理?
      

  3.   

    要学会思考学习啊。  去掉 WHERE a=b 不就是你想要的了?
      

  4.   

    select 表1.a,表1.b from 表1 inner join 表b
    on 表1.a =表2.a and 表1.b=表2.b
     group by 表1.a,表1.b having count(1)>=50 
      

  5.   

    按照sc273607742兄弟及u010933793兄弟的说法,确实可以找到这样的记录,,但是还有个问题,就是这样出来的结果只是一条记录,,也就是说相同的记录我需要都列出来,,因为还有其他的字段不一样,这样才好检查有没有问题。SmithLiu328兄的方法正在试。
    感谢这么多大虾帮忙!先谢过了!
      

  6.   

    送佛送到西吧。SELECT t.* FROM table1 t WHERE CONVERT(VARCHAR(100), t.a) + '_' + CONVERT(VARCHAR(100),t.b) IN (SELECT CONVERT(VARCHAR(100), a) + '_' + CONVERT(VARCHAR(100),b) FROM table1 GROUP BY a, b HAVING COUNT(1)>=50)
      

  7.   

    u010933793兄,我怎么看不明白你写的啊?
    真是抱歉,很久没弄过sql了。
      

  8.   

    首先感谢以上朋友的热心回答!在此谢过了。
    为了让我看得更明白,我直接把的需求写的详细点吧。我有一个表DEVICE,有SERIAL,DEVID,TIME,IP,PORT等7个字段,我现在需要比较SERIAL及DEVID字段,找出SERIAL字段相同,DEVID字段也相同的记录,并且这样的记录至少要50条才符合。最后把符合这样的记录都列出来。比如有50条记录,他们的SERIAL字段相同,DEVID字段也相同,就需要把这50条都列出来。
      

  9.   

    a,b都是字符类型的,如果不是,就转换
    select * from 表 where a+b in(
    select a+b from 表
    group by a,b
    having count(1)>=50) 
      

  10.   

    sc273607742 ,非常感谢你的耐心回答!
    经测试,你最后的这语句可以达到要求。
    最后我再把结果按SERIAL排个序就行了。
    谢谢!
      

  11.   

    sc273607742,现在能按照需求把记录查出来了,但是如果再按SERIAL排序的话又不行了,占cpu很高。
    语句如下:
    select * from DEVICE where SERIAL+DEVID in(
    select SERIAL+DEVID from DEVICE
    group by SERIAL,DEVID
    having count(1)>=50)
      

  12.   

    哦,搞定,晕倒了,是比较简单的。
    语句如下:
    select * from DEVICE where SERIAL+DEVID in(
    select SERIAL+DEVID from DEVICE
    group by SERIAL,DEVID
    having count(1)>=40) order by SERIAL