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。