解决方案 »

  1.   

    select num,count(*) from logs group by num having count(*)>=3
      

  2.   

    问题中给出的写法是使用自连接实现,自连接同一个表3次,找出3个ID相邻的num相同的记录,这种写法的缺点有两个,1数据量大的时候效率不高,2如果想找出n个连续相同数字,那自连接的表要n次。
    如果是ORACLE等提供窗口函数的数据库,这有一个类似的问题,可以参考其写法:http://www.raqsoft.cn/?p=2899.
            这个写法不需要连接不定数量的表,但很难看懂,当然写出来就更难了。
    其实这个运算本身很容易理解,可以试试润乾免费版的集算器,通过有序集合完成上述计算非常简单,类似上面的链接,脚本可以这样写:        如果想求连续n个相同的num,只需要将A3中的表达式中的 lx:3改成 lx:n即可。
    集算器提供JDBC接口,可以像数据库一样嵌入到应用程序中,用起来很简单。
      

  3.   

    where 那块的含义是说这张表自己进行关联两次,关联的时候,第一张表的数据是第二张的后一条,第二张表的数据是第三张的后一条,而且第一张和第二张的Numz一样,第二张和第三张表记录的Num相同但是这样做就如楼上所说如果多条连续的时候,不可能就关联多次,我觉得可以采取以下方式进行处理,可以处理多次情况Mysql:
    使用用户变量 @num进行统计,如果num的值进行该表了则@num置为1,如果num值相同,则加1,这样就相当于组内排序了,然后连续三条则num值为3,连续四条num值为4,只要最后过滤以下就可以了