gpt4 book ai didi

php - 如何将两个 UPDATE 查询合并为一个不同的 WHERE 和 SET?

转载 作者:行者123 更新时间:2023-11-29 16:40:18 24 4
gpt4 key购买 nike

我想知道是否可以将这两个查询组合起来,因为它们不能单独工作(两个查询之一只能工作)。他们是

$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);

这可以通过一次查询来完成吗?谢谢!!!

最佳答案

我并不是说您应该这样做,而是从您提供的代码流程来看,您可以这样做。

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_name 在 members 中是否保证唯一。如果是唯一的,则不需要order by;如果不是,它至少会为检索到的预期值增加一些一致性。

如果您可以控制数据库设计,我建议从 winners 中完全删除 mem_name。如果您一开始主要通过 mem_id 管理关系,那么它是/将会是冗余数据。

关于php - 如何将两个 UPDATE 查询合并为一个不同的 WHERE 和 SET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53380552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com