是否有一个SQL update语句来处理我的场景?
给定一个包含ID列、名称列和城市列的简单3列表,其中城市和名称可能都包含NULL: 我可能有一个或两个City/Name列的内容(但至少有一个列)。是否可以编写一条update语句来处理所有三种可能的情况 谢谢你的帮助 一些澄清:是否有一个SQL update语句来处理我的场景?,sql,sql-update,Sql,Sql Update,给定一个包含ID列、名称列和城市列的简单3列表,其中城市和名称可能都包含NULL: 我可能有一个或两个City/Name列的内容(但至少有一个列)。是否可以编写一条update语句来处理所有三种可能的情况 谢谢你的帮助 一些澄清: 标准SQL-无特定于供应商的代码 我认为这是不言而喻的,但显然不是:3种可能的情况是:a)只更新姓名栏,b)只更新城市栏,c)同时更新两者 对于视觉人: 表:MyTable ID Name City 1 Bob Houst
ID Name City
1 Bob Houston
伪代码:
update MyTable
set Name = <new content if content known, otherwise do not update>
,City = <new content if content known, otherwise do not update>
where ID = 1
更新MyTable
集合名称=
,城市=
其中ID=1
因为我是新来的,不知道有多少巨魔出没:
下面的问题(这是真的吗)?
为什么要更新字段?因为这就是人们使用DBMS所做的 CASE表达式将执行以下操作:
update MyTable
set Name = case when $1 is null then name else $1 end,
city = case when $2 is null then city else $2 end
where ID = 1;
$1
和$2
是您从代码中提供的参数。确切的语法取决于您使用的驱动程序/接口(在JDBC中,这将是?
而不是$x
)欢迎使用堆栈溢出。如果你能提供一些清晰的更新示例,这会有所帮助。请显示前表中的内容和后表中的内容。此外,请添加您的DBMS,因为每个DBMS可能都有自己的update语句辩证法。示例数据和所需结果将有所帮助。三种可能的情况是什么?