gpt4 book ai didi

mysql - 加入更新的替代值

转载 作者:行者123 更新时间:2023-11-29 06:13:49 26 4
gpt4 key购买 nike

我有一个 item 表,其中包含字段 item_idpriority 和许多其他字段。我还有一个包含两个字段的 item_priority 表:item_idpriority。并非 item 表中的每个项目在 item_priority 中都有匹配的记录。

我想更新 item 表以根据 item_priority 表设置优先级。对于没有匹配项的所有项目,我希望 priority 为 -1。

我可以运行以下命令:

update item set priority = -1

update item 
join item_priority on item.item_id = item_priority.item_id
set item.priority = item_priority.priority

这会得到我需要的东西。但是有没有办法在单个查询中执行此操作?

注意:我知道这个设计不是最优的,但出于不同的原因必须这样做。我只想在不重新设计表的情况下在单个查询中完成此操作。

最佳答案

update item 
left join item_priority on item.item_id = item_priority.item_id
set item.priority = IF (item_priority.priority is null, -1, item_priority.priority)

这是另一种选择。这对你来说更快吗?

update item
join (select item.item_id, ifnull(item_priority.priority, -1) as priority
from item
left join item_priority on item.item_id = item_priority.item_id) new_priority on item.item_id = new_priority.item_id
set item.priority = new_priority.priority

关于mysql - 加入更新的替代值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991610/

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