A表
ip varchar(20)  
time varchar(20)
A表中有多个ip.B表
ip_num int(4)用B表中的ip_num来统计A表中的每一个ip的数目。要将上面这个写成一个存储过程。因为后面要事件触发器要用到它。大牛帮帮忙呀,谢谢啦!!!

解决方案 »

  1.   

    上面B表写错了
    B表为:ip varchar(20)
    ip_num int(4)
    A表中的数据已经存在了,现在要用这个存储过程生成B表,B表也已经建好了,插入数据即可。
      

  2.   

    不需要存储过程,直接SQL语句如下
    insert into B
    select ip,count(*) from A group by ip;
      

  3.   

    语法不熟没关系,勤查帮助文档手册就行了。手册中本身就有例子。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    非常感谢您的回答!!这个问题还有一个关键的地方是A表是在不断更新的。所以要调用事件触发器对它1S钟更新一次。这样的话,因为ip数目在不断增加,所以要针对每一个ip进行数目的更新。这样该怎么办呢??
      

  5.   

    insert into B
    select ip,count(*) from A group by ip
    ON DUPLICATE KEY UPDATE ip_num=VALUES( ip_num)
      

  6.   

    谢谢您!这样的意思就是说当新的ip进到A表,B表就执行insert操作,当旧的ip在A表中出现的时候,B表就执行update操作,对么?另外在麻烦您下,因为我的B表除了这两项之外,还有其他的内容。但是都是要基于这个ip分组的,所以我可以在select后面再添加一个select么