Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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_Performance_Teradata - Fatal编程技术网

SQL从第二个表中填充值

SQL从第二个表中填充值,sql,performance,teradata,Sql,Performance,Teradata,我提出这个查询是为了使用子查询来填充第二个表中缺少的字段。 我无法修改原始表格 我想知道我是否遗漏了什么,以及是否有更有效的方法来实现这一点?您可以使用左连接和合并而不是相关子查询: SELECT COALESCE(original.target_field,fill_in.target_field) AS myField FROM primary.table original LEFT JOIN second.table fill_in ON original.id = fill_in.

我提出这个查询是为了使用子查询来填充第二个表中缺少的字段。
我无法修改原始表格


我想知道我是否遗漏了什么,以及是否有更有效的方法来实现这一点?

您可以使用
左连接
合并
而不是相关子查询:

SELECT COALESCE(original.target_field,fill_in.target_field) AS myField
FROM primary.table original
LEFT JOIN second.table fill_in 
  ON original.id = fill_in.id

测试不同的方法总是值得的。但是,如果有适当的索引,您的查询应该很好

我会这样写:

SELECT (CASE WHEN o.target_field IS NULL  
             THEN (SELECT f.target_field
                   FROM second.table f 
                   WHERE o.id = f.id
                  )  
             ELSE o.target_field
        END) AS myField
FROM primary.table o;
您需要在
第二个表(id,target\u字段)
上建立索引。对于
左连接
版本,您可能需要相同的索引

SELECT (CASE WHEN o.target_field IS NULL  
             THEN (SELECT f.target_field
                   FROM second.table f 
                   WHERE o.id = f.id
                  )  
             ELSE o.target_field
        END) AS myField
FROM primary.table o;