gpt4 book ai didi

mysql - MySQL 如何更新比指定更多的行?

转载 作者:太空宇宙 更新时间:2023-11-03 10:23:58 25 4
gpt4 key购买 nike

我有一个 SQL UPDATE 语句,它使用看起来像这样的表的复合主键 (Key1,Key2):

UPDATE TableName SET FieldName = CASE 
WHEN (Key1=389 AND Key2=5594091315209354374) THEN 1320243147187
WHEN (Key1=397 AND Key2=8686441440518828409) THEN 1320243147562
WHEN (Key1=389 AND Key2=5717973625907258381) THEN 1320243147182
....
WHEN (Key1=394 AND Key2=5512452777552926025) THEN 1320243147389 END
WHERE Key2 IN (123782199165241826,5594091315209354374,...,3553840348728167644)
AND Key1 IN (400,394,391,389,397);

我可能在 CASE 语句中有大约 20 个 WHEN

MySQL 怎么会说这比 WHEN 更新的行稍微多一些?

最佳答案

您的 CASE 语句与受影响的行无关完全取决于您的 WHERE 子句:

WHERE Key2 IN (123782199165241826,5594091315209354374,...,3553840348728167644) AND Key1 IN (400,394,391,389,397);

符合这些条件的每一行都将被更新。那么,问题是不匹配 CASE 条件的行会发生什么情况?

对于这部分,我不是 100% 确定 MySQL 会做什么,因为我更像是一个 sql server 的人。但是,我怀疑您的 CASE 语句导致 NULL,然后将其分配给 FieldName。 MySQL 也有可能决定不更改任何内容,但我仍然希望它报告所有与您的 WHERE 子句匹配的行已更新。

您可能应该在 case 语句的末尾有一个 ELSE FieldName确定您得到后一种行为(没有变化)而不是前一种行为(设置为空)。

关于mysql - MySQL 如何更新比指定更多的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981950/

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