Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL中可用的非空值更新多个空值_Sql - Fatal编程技术网

使用SQL中可用的非空值更新多个空值

使用SQL中可用的非空值更新多个空值,sql,Sql,我有两个表存储了两组相同的ID,当四个ID中的任何一个为空时,前端应用程序就会出现问题。这四个值总是不同的,哪一个可以为空,但总会有一个输入正确 我的问题是,我是否可以将这四个值输入临时表,然后使用实际有值的列更新所有空值?由于具有正确值的列一直在更改,因此更难执行 基本上,我正在创建一个存储过程,但无法理解此逻辑。听起来您只需要使用合并来查找非空值 coalesce(table1.col1, table1.col2, table2,col1, table2.col2) 唯一需要注意的是,如果

我有两个表存储了两组相同的ID,当四个ID中的任何一个为空时,前端应用程序就会出现问题。这四个值总是不同的,哪一个可以为空,但总会有一个输入正确

我的问题是,我是否可以将这四个值输入临时表,然后使用实际有值的列更新所有空值?由于具有正确值的列一直在更改,因此更难执行


基本上,我正在创建一个存储过程,但无法理解此逻辑。

听起来您只需要使用
合并
来查找非空值

coalesce(table1.col1, table1.col2, table2,col1, table2.col2)

唯一需要注意的是,如果两个列具有不同的非空值,则此表达式将返回它找到的第一个(按列的列出顺序)。但是,如果您没有出现这种情况,或者如果您可以指定在出现这种情况时使用哪一列,则无论哪一列的组合为空,这都应该有效。

使用表表达式连接两个表,然后从结果表,用您拥有的数据更新缺少的列。

您可以添加一些您拥有的示例数据和所需数据的示例吗?您使用的是哪种DBMS?如何指定列首选项?您会使用IF语句吗?您会在调用
coalesce()
时首先列出首选列。因此,如果
col1
col2
都有非空值,
coalesce(col1,col2)
将返回值形式
col1
,但是
coalesce(col2,col1)
将返回值形式
col2
感谢您的时间标记。最后,我将coalesce值放入一个变量中,并创建了一个循环来从临时表逐行更新表。我看不出Coalesce函数在其他场景中是多么有用,我的意思是,除非将值存储在变量中,否则它甚至不容易引用。再次感谢马克。