这个sql怎么写?

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:30:19
表名log,字段host,message。我现在想要找出表里host重复次数大于3次的有效数据。
所谓有效,即message是不重复的,如同一个host所对应的message全部相同,则只算一个有效数据。
不同host之间message发生重复暂不考虑。
是我没表述清楚还是这个问题太难了,没有人回答吗?
2层的不正确。
3层的也不对,不过给了我一些启示。

select log.host,log.message from (select count(host) as a,host from (select host,message from log group by host,message) z group by host) x inner join log on log.host=x.host where a>3
--------------------------------------------------
这个写得太麻烦.不过应该能实现你要的功能.
应该可以优化一下.原来写过类似的语句.
忘记你要去掉重复资料了.
你在前面加一个Distinct吧

select * from log a where (select count(1) from log b where b.host=a.host and b.message<>a.message) >3

对于这样的情况,只能说数据库设计有问题,导致SQL语句难以去写!为什么允许无效数据的插入呢?
要不你就再加一个字段予以区别!!