使用SQL中可用的非空值更新多个空值
我有两个表存储了两组相同的ID,当四个ID中的任何一个为空时,前端应用程序就会出现问题。这四个值总是不同的,哪一个可以为空,但总会有一个输入正确 我的问题是,我是否可以将这四个值输入临时表,然后使用实际有值的列更新所有空值?由于具有正确值的列一直在更改,因此更难执行使用SQL中可用的非空值更新多个空值,sql,Sql,我有两个表存储了两组相同的ID,当四个ID中的任何一个为空时,前端应用程序就会出现问题。这四个值总是不同的,哪一个可以为空,但总会有一个输入正确 我的问题是,我是否可以将这四个值输入临时表,然后使用实际有值的列更新所有空值?由于具有正确值的列一直在更改,因此更难执行 基本上,我正在创建一个存储过程,但无法理解此逻辑。听起来您只需要使用合并来查找非空值 coalesce(table1.col1, table1.col2, table2,col1, table2.col2) 唯一需要注意的是,如果
基本上,我正在创建一个存储过程,但无法理解此逻辑。听起来您只需要使用
合并
来查找非空值
coalesce(table1.col1, table1.col2, table2,col1, table2.col2)
唯一需要注意的是,如果两个列具有不同的非空值,则此表达式将返回它找到的第一个(按列的列出顺序)。但是,如果您没有出现这种情况,或者如果您可以指定在出现这种情况时使用哪一列,则无论哪一列的组合为空,这都应该有效。使用表表达式连接两个表,然后从结果表,用您拥有的数据更新缺少的列。您可以添加一些您拥有的示例数据和所需数据的示例吗?您使用的是哪种DBMS?如何指定列首选项?您会使用IF语句吗?您会在调用
coalesce()
时首先列出首选列。因此,如果col1
和col2
都有非空值,coalesce(col1,col2)
将返回值形式col1
,但是coalesce(col2,col1)
将返回值形式col2
感谢您的时间标记。最后,我将coalesce值放入一个变量中,并创建了一个循环来从临时表逐行更新表。我看不出Coalesce函数在其他场景中是多么有用,我的意思是,除非将值存储在变量中,否则它甚至不容易引用。再次感谢马克。