gpt4 book ai didi

mysql - 将两个查询合并为同一个表中的一个(相同列/不同行)

转载 作者:行者123 更新时间:2023-11-29 08:59:09 25 4
gpt4 key购买 nike

对于消息传递系统,我尝试为员工 2 标记适当的 to_del 和 from_del 字段。

这是员工 2 删除消息之前的情况:

company_id | to | from | to_del | from_del
1 4 2 0 0
1 2 4 0 0

这是员工 2 删除消息后的情况:

company_id | to | from | to_del | from_del
1 4 2 0 1
1 2 4 1 0

我必须运行 2 个查询才能使其正常工作:

UPDATE messages SET from_del='1' WHERE company_id=1 AND from=2
UPDATE messages SET to_del='1' WHERE company_id=1 AND to=2

是否有办法将这 2 个查询合并为 1 个更高效的查询?像这样的东西:

UPDATE messages SET from_del='1',to_del='1' WHERE company_id=1 AND (from=2 OR to=2)

此单个查询的问题在于它将所有 4 个删除字段标记为“1”。关于如何让单个高效查询像上面的 2 个查询一样工作,有什么想法吗?

最佳答案

听起来像是 case 的工作...

update messages
set from_del = case when from = 2 then 1 else from_del end
, to_del = case when to = 2 then 1 else to_del end
where company_id = '1'

您正在更新不需要以这种方式进行的列,但您只执行一次更新,而不是像多个查询那样执行多次更新。

我不喜欢使用 fromto 作为列名...这只会造成困惑...

关于mysql - 将两个查询合并为同一个表中的一个(相同列/不同行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115590/

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