select 与 update 如何连用

yadoufeng 2012-07-16 11:14:19
我想更新表中某行中的某几列,更新完后,要得到这行的所有列,如何用一个sql 语句实现。谢谢

create table role
(
id int not null auto_increment,
roleid int,
silver int,
gold int,
primary key (id)
)

update role set gold=gold+100 where roleid=1;
select * from role where roleid=1;
以上2个语句合并
...全文
479 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2012-07-17
  • 打赏
  • 举报
回复
更新完后,要得到这行的所有列

这是两个逻辑

可以写到存储过程里面
我不是稻草人 2012-07-17
  • 打赏
  • 举报
回复
顶2楼 ACMAIN_CHM,这么久了还看你在,谢谢你以前帮我解决好多mysql问题。赞一个!
jastdoit 2012-07-17
  • 打赏
  • 举报
回复
无关联关系,无法合并。
Rotel-刘志东 2012-07-17
  • 打赏
  • 举报
回复
没有合并的方法。
wwwwb 2012-07-17
  • 打赏
  • 举报
回复
没有办法
ACMAIN_CHM 2012-07-17
  • 打赏
  • 举报
回复
这是两个语句,并且你是先更新,再查询出来,没有办法合并。
bonlog 2012-07-17
  • 打赏
  • 举报
回复
第一,二者没关联性,故而没法直接相联;
第二,注意语句规范,手册中说明,请使用大写.

类同这样的可以合并
update role set gold=gold+100 where roleid = (SELECT wcid FROM WC WHERE roleid = '1');
Korbin Luo 2012-07-17
  • 打赏
  • 举报
回复
无法合并,建议用存储过程:
create procedure updateAndBack(in cId int)
begin
set @mySql = concat('update role set gold=gold+100 where roleid=',cId);
prepare stmt from @mySql;
execute stmt;

set @mySql = concat('select * from role where roleid=',cId);
prepare stmt from @mySql;
execute stmt;
end

调用时call updateAndBack(1)即可。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧