更新一个字段并选择多个字段,其中一个条件为真?MySQL


Updating a field and selecting multiple fields where a single condition is true? MySQL

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

一个更新查询:

UPDATE `users` SET `activation`='$activationCode' WHERE `email`='$anEmail'

和一个select查询:

SELECT `password`,`salt`,`fname`,`email` FROM `users` WHERE `email`='$anEmail'

看到这里的重复条件了吗?当然,当我可以在一个条件下一次执行所有操作时,在重复条件下查询MySQL数据库两次是不必要的?

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

您必须编写一个存储过程。

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 ;

用:

调用过程
CALL UpdateAndSelect(:email, :activation)

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

SQL通过SELECT语句更新多个字段