繁体   English   中英

如何将两个UPDATE查询合并到一个不同的WHERE和SET中?

[英]How to merge two UPDATE queries into one, different WHERE and SET?

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

$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保证唯一。 如果是唯一的,则不需要排序依据。 如果不是,则至少为检索到的期望值增加一些一致性。

如果您对数据库设计有控制权,我建议完全从winners删除mem_name 如果您最初主要是通过mem_id管理关系,那么它将/将是冗余数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM