如何将两个更新查询合并成一个不同的where和set?

k75qkfdt  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(315)

我想知道是否有可能合并这两个查询,因为它们不能单独工作(两个查询中的一个只能工作)。他们是

$addquery = "UPDATE winners SET mem_name='$addname' WHERE mem_name='$deletename'";
$addresult= mysqli_query($connect, $addquery);
$query = "UPDATE winners INNER JOIN members SET winners.mem_id = members.mem_id
                    WHERE winners.mem_name = members.mem_name";
$result = mysqli_query($connect, $query);

这可以在一个查询中完成吗?谢谢您!!!

hrysbysz

hrysbysz1#

我不是说你应该这样做,但从你提供的代码流来看,这就是你可以这样做的。

UPDATE winners w
SET w.mem_name = '$addname'
, w.mem_id = IFNULL(SELECT m.mem_id 
                    FROM members AS m 
                    WHERE m.mem_name = '$addname' 
                    ORDER BY m.mem_id DESC 
                    LIMIT 1
                   , w.mem_id
                   )
WHERE w.mem_name = '$deletename'
;

注意,order by在技术上是可选的;您的问题没有说明mem\u name在 members . 如果是唯一的,则不需要order by;如果不是,则至少会为检索到的预期值添加一些一致性。
如果您可以控制数据库设计,我建议您删除 mem_namewinners 总而言之。如果您主要通过 mem_id 首先。

相关问题