gpt4 book ai didi

mysql - 更新 SQL 语句中的任意多个字段

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

有什么方法可以选择性地更新 SQL 语句中的多个字段中的任何一个?我只能得到这样的东西:

UPDATE Customer SET 
ContactName = ? <=== what to do here if ? is null???
, CompanyName = ? <=== what to do here if ? is null???
, AddressId = ? <=== what to do here if ? is null???
, ...
WHERE CustomerId = ?

由于wrapper层和MySQL的限制,必须是单条语句。

为澄清起见,我想创建一个语句,该语句将使用列出的字段的一个或多个非空值运行,并且将仅更新值不为空的那些字段,而不会影响其他字段。

这是一个 RESTful 更新 API,我不想为每个可能的字段组合单独声明,我不想要求 API 调用者提供记录中的每个字段,这会很笨拙不会面向 future (添加字段会破坏现有的 API 调用)。因为它是一个 REST API,所以我希望映射 POST/customer/xxx?ContactName=...&CompanyName=... 以更新记录。

最佳答案

您的目标不完全清楚,但我认为您正在寻找 coalesce特征;它将返回第一个非空值:

mysql> SELECT COALESCE(NULL,1); -> 1

mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL

因此您可以设置一个“默认值”以在值为 null 的情况下使用:

UPDATE Customer SET 
ContactName = COALESCE(?, <Some default>)
...

如果你不想改变字段,就使用当前值:

UPDATE Customer SET 
ContactName = COALESCE(?, ContactName)

关于mysql - 更新 SQL 语句中的任意多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19187494/

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