是否可以在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语句更新多个字段