送佛送到西吧。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)
sc273607742,现在能按照需求把记录查出来了,但是如果再按SERIAL排序的话又不行了,占cpu很高。 语句如下: select * from DEVICE where SERIAL+DEVID in( select SERIAL+DEVID from DEVICE group by SERIAL,DEVID having count(1)>=50)
哦,搞定,晕倒了,是比较简单的。 语句如下: select * from DEVICE where SERIAL+DEVID in( select SERIAL+DEVID from DEVICE group by SERIAL,DEVID having count(1)>=40) order by SERIAL
where a=b
group by a,b
having count(1)>=50
我的问题是:在一个表中,有多个字段,找到其中两个字段都相同的记录(是字段a=字段a且字段b=字段b,不是字段a=字段b),而且这样的记录要超过50条才算符合,,请问如何处理?
on 表1.a =表2.a and 表1.b=表2.b
group by 表1.a,表1.b having count(1)>=50
感谢这么多大虾帮忙!先谢过了!
真是抱歉,很久没弄过sql了。
为了让我看得更明白,我直接把的需求写的详细点吧。我有一个表DEVICE,有SERIAL,DEVID,TIME,IP,PORT等7个字段,我现在需要比较SERIAL及DEVID字段,找出SERIAL字段相同,DEVID字段也相同的记录,并且这样的记录至少要50条才符合。最后把符合这样的记录都列出来。比如有50条记录,他们的SERIAL字段相同,DEVID字段也相同,就需要把这50条都列出来。
select * from 表 where a+b in(
select a+b from 表
group by a,b
having count(1)>=50)
经测试,你最后的这语句可以达到要求。
最后我再把结果按SERIAL排个序就行了。
谢谢!
语句如下:
select * from DEVICE where SERIAL+DEVID in(
select SERIAL+DEVID from DEVICE
group by SERIAL,DEVID
having count(1)>=50)
语句如下:
select * from DEVICE where SERIAL+DEVID in(
select SERIAL+DEVID from DEVICE
group by SERIAL,DEVID
having count(1)>=40) order by SERIAL