是否有一个SQL 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列、名称列和城市列的简单3列表,其中城市和名称可能都包含NULL:

我可能有一个或两个City/Name列的内容(但至少有一个列)。是否可以编写一条update语句来处理所有三种可能的情况

谢谢你的帮助

一些澄清:

  • 标准SQL-无特定于供应商的代码

  • 我认为这是不言而喻的,但显然不是:3种可能的情况是:a)只更新姓名栏,b)只更新城市栏,c)同时更新两者

  • 对于视觉人:

  • 表:MyTable

    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语句辩证法。示例数据和所需结果将有所帮助。三种可能的情况是什么?