gpt4 book ai didi

mysql - 如何根据值选择要更新的列

转载 作者:行者123 更新时间:2023-11-29 10:11:02 27 4
gpt4 key购买 nike

我有一个表,其中包含 1 个主键列 a、1 个不可为空的外键列 b 和 5 个可为空的外键列 c、d、e、f、g。

我必须将值 Y 插入到值 X 为主键的行中:

  • 如果表中不存在 X,我必须使用以下内容创建一个新行:

    INSERT INTO table(a, b) VALUES (X, Y)
  • 如果 X 存在于表中并且 b 包含值,我必须在 c 列中设置 Y:

    UPDATE table SET c = Y
  • 如果 X 存在于表中并且 b 和 c 包含一个值,我必须在 d 列中设置 Y:

    UPDATE table SET d = Y

等等;如果该行已满,则不会发生任何事情。

如何在工作查询中翻译它?请注意,我使用的是 MySQL。谢谢。

最佳答案

您可以使用INSERT ... ON DUPLICATE KEY UPDATE使用键 X 更新行(如果存在)。如果列为 NULL 并且其“前驱”不是 NULL(c 除外),则需要将其设置为 X code> 为 b 被声明为 NOT NULL)。可以用 CASE ... END 来表示.

INSERT INTO table
(a,
b)
VALUES (X,
Y)
ON DUPLICATE KEY UPDATE c = CASE
WHEN c IS NULL
THEN Y
ELSE
c
END,
d = CASE
WHEN d IS NULL
AND c IS NOT NULL
THEN Y
ELSE
d
END,
e = CASE
WHEN e IS NULL
AND d IS NOT NULL
THEN Y
ELSE
e
END,
f = CASE
WHEN f IS NULL
AND e IS NOT NULL
THEN Y
ELSE
f
END,
g = CASE
WHEN g IS NULL
AND f IS NOT NULL
THEN Y
ELSE
g
END;

关于mysql - 如何根据值选择要更新的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50956385/

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