
DECLARE _cur CURSOR FOR SELECT语句
–第一种循环:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET loop_done=1;
OPEN _cur;
REPEAT
FETCH filedmsglist INTO 变量;
IF NOT loop_done THEN
–处理语句
END IF;
UNTIL loop_done END REPEAT;
CLOSE _cur;
–第二种循环:
open _cur;
loop_cur:loop
fetch _cur into 变量;
if _done=1 then
leave loop_cur;
end if;
–处理语句
end loop;
close _cur;
一个完整的嵌套循环例子(带返回值):
CREATE DEFINER=`root`@`localhost` PROCEDURE
`process_tag_filedmsg`......
作者: owoer
|
发表于:2012年9月21日
|
栏目:MySQL
|
mysql循环(嵌套) 过程(带返回值)已关闭评论
阅读全文

一个简单的例子:
$query="INSERT INTO `testtable` (`clou1`,`clou2`) VALUES ('testvalue','test')";
mysql_query($query);
$query="SELECT LAST_INSERT_ID()";
$result=mysql_query($query);
$rows=mysql_fetch_row($result);
echo $rows[0];
参考:
mysql使用函数last_insert_id() 得到刚插入记录的AUTO_INCREACE字段id
必须前一SQL为一INSERT语句,如果是其他语句,返回的ID值为零
产生的ID 每次连接后保存在服务器中。
这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_I......

从其他库导入后,查询无法使用,提示:The user specified as a definer (‘root’@’%’) does not exist,原因为root无访问权限,只要给root用户再添加一个对全部host都有可以访问的权限
操作如下:
登陆mysql
mysql -u root -pPasswd
mysql >grant all privileges on *.* to root@”%” identified by “Passwd”
mysql >flush privileges;
作者: owoer
|
发表于:2012年9月11日
|
栏目:MySQL
|
The user specified as a definer (‘root’@’%’) does not exist已关闭评论
阅读全文

今天在批量删除记录时出现You can’t specify target table ‘threaddet’ for update in FROM clause错误提示。
语句如下:
delete from threaddet where id in (SELECT m.id FROM `threaddet` m left outer join `filedmsg` f on (m.filemsgid = f.id) WHERE f.id is null)
后查找网络得到错误原因为:
不能先select出同一表中的某些值,再delete这个表(在同一语句中)。
使用oracle时常常这样写,但mysql是不支持此种用法。后改用网友的子集方式,搞定此问题。
改进后的语句:
delete from threaddet where id in ......
作者: owoer
|
发表于:2012年9月11日
|
栏目:MySQL
|
You can’t specify target table已关闭评论
阅读全文

mysql出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)连接访问。
那么要在其他主机访问该怎么设置呢?
只需执行如下语句让本机外的其他都可以访问即可:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
当然你也可以参考:http://www.studyday.net/2010/08/64