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

Sql 使用另一个表中的数据更新记录(但查找表包含重复记录)

Sql 使用另一个表中的数据更新记录(但查找表包含重复记录),sql,plsql,Sql,Plsql,我有一个记录,我想用另一个表中相同字段的数据更新一个字段。问题是查找表包含重复的记录,所以我只想从第一个匹配的记录中获取数据 以下是我现在的情况,但我得到了以下错误: 太多的价值观 我的问题是: UPDATE T_TABLE1 T1 SET T1.UPDATEFIELD = (SELECT DISTINCT(T2.itemtag), MAX(T2.UPDATEFIELD) FROM T_TABLE2 T2

我有一个记录,我想用另一个表中相同字段的数据更新一个字段。问题是查找表包含重复的记录,所以我只想从第一个匹配的记录中获取数据

以下是我现在的情况,但我得到了以下错误:

太多的价值观

我的问题是:

UPDATE T_TABLE1 T1 
SET T1.UPDATEFIELD =  (SELECT DISTINCT(T2.itemtag), MAX(T2.UPDATEFIELD) 
                       FROM T_TABLE2 T2  
                       WHERE T2.ITEMTAG = T1.ITEMTAG 
                       GROUP BY T2.itemtag)
这个怎么样:

UPDATE T_TABLE1 T1 
SET T1.UPDATEFIELD =  (SELECT MAX(T2.UPDATEFIELD) 
                       FROM T_TABLE2 T2  
                       WHERE T2.ITEMTAG = T1.ITEMTAG 
                       GROUP BY T2.itemtag)

您正在选择导致问题的两列

UPDATE T_TABLE1 T1 
SET T1.UPDATEFIELD =  (SELECT MAX(T2.UPDATEFIELD) 
                       FROM T_TABLE2 T2  
                       WHERE T2.ITEMTAG = T1.ITEMTAG 
                       GROUP BY T2.itemtag)

希望这有帮助。

唯一的问题是,当我添加条件“WHERE T2.ITEMTAG=T1.ITEMTAG或T2.ITEMTAG=T1.END1或T2.ITEMTAG=T1.END2”时,查询将最终运行表中有多少行?运行Or非常昂贵。一个是60000行,另一个是27000行。行数加上多个Or匹配是导致查询无限期运行的最可能原因。我将考虑更改我的表设计以消除执行OR的需要,或者您需要更改查询以消除OR。