在单个查询中,MySQL是否可以更新单个字段并在单个条件为真的情况下选择多个不同的字段?我不完全确定正确的SQL是什么,但我想合并这两个示例查询,如果可能的话,当然。
更新查询:
UPDATE `users` SET `activation`='$activationCode' WHERE `email`='$anEmail'
和一个选择查询:
SELECT `password`,`salt`,`fname`,`email` FROM `users` WHERE `email`='$anEmail'
请在此处查看重复情况?当我可以在一个条件下一次完成所有操作时,没有必要在重复条件下查询MySQL数据库两次吗?
值得注意的是,$anEmail
和$activationCode
将是PHP中先前定义的变量(前者在两个查询中也完全相同)。欢呼声。
答案 0 :(得分:3)
你必须写一个stored procedure。
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)
答案 1 :(得分:1)
如果你只是想跳过重复的where子句,那么请查看这篇文章(第一个答案)