想更新表role 把grade属性+1,更新那些name在top表中按grade排列前paramLimit名的人 在top和role中都有名为name的列DROP PROCEDURE IF EXISTS UpdateGrade;
CREATE PROCEDURE UpdateGrade(
IN paramGrade INT,
IN paramLimit INT
)
BEGIN SET @result = 0;
UPDATE role SET
grade=grade+1
WHERE name is in(SELECT name from top where grade = paramGrade orderby grade limit paramLimit); SET @result = paramGrade;
END
CREATE PROCEDURE UpdateGrade(
IN paramGrade INT,
IN paramLimit INT
)
BEGIN SET @result = 0;
UPDATE role SET
grade=grade+1
WHERE name is in(SELECT name from top where grade = paramGrade orderby grade limit paramLimit); SET @result = paramGrade;
END
解决方案 »
- 很困扰的问题..走 过的朋友帮帮忙吧.
- ubuntu 10 安装mysql ,ERROR 2002 (HY000): Can't connect to local MySQL server throu
- 急!我的MYSQL打不开了,怎么回事呀?
- mysql连接问题
- MYSQL如何设置两个两之间关联
- 低版本的MYSQL导出的库文件到入到高版本的数据库出现问题!(请高手帮我看看这些出错提示是什么)
- 关于mysql中把一个表中中文取出,当再把它们加入另一个表就是乱码的问题?
- 无法删除字段
- 如何将数组导入到mysql的不同记录的相同字段中 (一列)?
- 请教关于排序表的问题
- 坐等答案,分数不多,望笑纳~
- 如何用creat执行一次查询,建立多个表,也就是一次执行一堆creat创建多个表
prepare stmt from @sql;
execute stmt;update role A,temp_top B
set A.grade = A.grade + 1
where A.name = B.namedrop table temp_topend
还有这里为什么要这么写 而不是直接写creat table。我不太了解数据库
SET @prepareStatement = CONCAT(.....);
PREPARE stmt FROM @prepareStatement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @prepareStatement1 = CONCAT(.....);
PREPARE stmt FROM @prepareStatement1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END可以这样写吗 如果我想排两个序的话 还是必须要放在两个存储过程里