MySQL Update语句的优化问题

csjtxy 2014-11-25 10:48:04
比如,我有一个表User,字段有UserId(为自增长),UserName,Remark。
在存储过程中,更新某一条记录时,语句为
UPDATE `user` SET UserName = 'test', Remark = 'TestRemark' where UserId = 1
存储过程传入两个参数PUserName,PRemark。

问题是:
有几种情况,
1 是两个参数都传了值;
2 是只传了PUserName的值;
3 是只传了PReMark的值。

我希望达到以下效果:如果哪个参数传的值为空,则不写Set后面的对应语句。
哪位高手赐教?
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2014-11-25
  • 打赏
  • 举报
回复
如楼上所说,用IF做几个分支就行了。
rucypli 2014-11-25
  • 打赏
  • 举报
回复
用if语句判断下
benluobo 2014-11-25
  • 打赏
  • 举报
回复
declare @sql varchar(100); set @sql = 'update user set '; if(PUserName is not null) then @sql = concat(@sql, 'username = "test"'); end if; if(PReMark is not null) then @sql = concat(@sql, ',Remark = 'TestRemark''); end if; @sql = concat(@sql, ' where userid = 1'); prepare s from @sql; execute s; deallocate prepare s;
csjtxy 2014-11-25
  • 打赏
  • 举报
回复
能提供一个写法么?
Rotel-刘志东 2014-11-25
  • 打赏
  • 举报
回复
if判断一下几种情况就可以了。

56,679

社区成员

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

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