- 论坛徽章:
- 0
|
5可用积分
想做一个词频统计,写了一个存储过程
mysql> delimiter //
mysql> create procedure keyword_stat( IN Keyword varchar(100) , IN Type varchar(100) , OUT count INT )
-> BEGIN
-> IF EXISTS( select * from keyword where word=Keyword&&type=Type)
-> THEN
-> update keyword set freq=freq+1 where word=Keyword&&type=Type;
-> ELSE
-> insert into keyword ( word, type,freq) values ( Keyword , Type , 1 );
-> END IF;
-> END//
delimiter ;Query OK, 0 rows affected (0.00 sec)
在运行后
mysql> call keyword_stat( "1" , "2" , @a) ;
Query OK, 1 row affected (0.01 sec)
mysql> select * from keyword;
+------+------+---------------------+------+
| word | type | time | freq |
+------+------+---------------------+------+
| 1 | 2 | 2009-08-03 17:02:12 | 1 |
+------+------+---------------------+------+
1 row in set (0.01 sec)
又运行
mysql> call keyword_stat( "1" , "3" , @a) ;
Query OK, 1 row affected (0.00 sec)
mysql> select * from keyword;
+------+------+---------------------+------+
| word | type | time | freq |
+------+------+---------------------+------+
| 1 | 2 | 2009-08-03 17:02:12 | 2 |
+------+------+---------------------+------+
1 row in set (0.00 sec)
结果并没有新增一条记录,而是把第一条记录频率给加了1.
再运行
mysql> call keyword_stat( "2" , "3" , @a) ;
Query OK, 1 row affected (0.00 sec)
mysql> select * from keyword;
+------+------+---------------------+------+
| word | type | time | freq |
+------+------+---------------------+------+
| 1 | 2 | 2009-08-03 17:02:12 | 2 |
| 2 | 3 | 2009-08-03 17:03:48 | 1 |
+------+------+---------------------+------+
2 rows in set (0.00 sec)
感觉where 后面的条件只有第一个执行了判断,第二个条件没起作用
各位帮忙看看啊。谢谢!
我是mysql新手,呵呵 |
最佳答案
查看完整内容
你的输入参数 Type是mysql的保留字。改个变量名就ok了。同时把&&改成and
|