首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个条件为真的情况下更新一个字段并选择多个字段?MySQL

在单个条件为真的情况下更新一个字段并选择多个字段?MySQL
EN

Stack Overflow用户
提问于 2011-12-26 19:30:34
回答 2查看 268关注 0票数 1

在MySQL中,是否可以在单个查询中更新单个字段并选择多个不同的字段,其中只有一个条件为真?我不太确定正确的SQL应该是什么,但如果可能的话,我当然希望合并这两个示例查询。

示例

update查询:

代码语言:javascript
复制
UPDATE `users` SET `activation`='$activationCode' WHERE `email`='$anEmail'

和一个select查询:

代码语言:javascript
复制
SELECT `password`,`salt`,`fname`,`email` FROM `users` WHERE `email`='$anEmail'

看到这里的重复条件了吗?当然,没有必要使用重复的条件查询MySQL数据库两次,而我可以在一个条件下一次完成所有这些操作?

值得注意的是,$anEmail$activationCode是在PHP中预先定义的变量(前者在两个查询中也是完全相同的)。干杯。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-26 19:42:36

您必须编写一个stored procedure

代码语言:javascript
复制
delimiter ;;
CREATE PROCEDURE UpdateAndSelect (mEmail Varchar(50), mactivationCode Varchar(20))
 BEGIN
   START TRANSACTION;
   UPDATE `users` SET `activation`=mactivationCode WHERE `email`=mEmail;
   SELECT `password`,`salt`,`fname`,`email` FROM `users` WHERE `email`=mEmail;
   COMMIT;
 END;;
delimiter ;

使用以下命令调用该过程:

代码语言:javascript
复制
CALL UpdateAndSelect(:email, :activation)
票数 3
EN

Stack Overflow用户

发布于 2011-12-26 20:13:36

如果你只是想跳过重复的where子句,那么可以看看这篇文章(第一个答案)

SQL Update Multiple Fields FROM via a SELECT Statement

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8635311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档