多列子查询更新... SQL

时间:2016-11-11 22:44:02

标签: sql

我刚刚在一家仓库数据库公司开始工作,我试图在下班后学习这些材料,因为这是我第一次真正的编程工作(刚刚毕业)。我无法向您展示代码,但我会告诉您我正在做什么。这个计划的效率是关键。

我目前需要优化的内容。

UPDATE TableName1
SET aValue1 = (SELECT aValue2 FROM TableName1, TableName2 WHERE search through extensive string (not sure if you needed to know that last part))
WHERE bValue1 in (SELECT bValue2 FROM TableName1, TableName2 WHERE search through extensive string (not sure if you needed to know that last part))

一般来说,我会很好。但这是使用大量序列化数据,数百万项搜索,效率是关键。

两个select语句非常相似......所以他们想看看是否有任何方法来压缩这个,所以select语句只运行一次,并将数据从WHERE(UPDATE)汇集到SET(UPDATE)中。我一直遇到你只能发回一个Column值的问题。

有什么建议吗?我希望这很清楚。非常感谢你们。也有一个愉快的周末。

2 个答案:

答案 0 :(得分:1)

如果WHERE子句的内容相同,则 应能够使用完整的表格引用,只选择会在联接中显示的行。

UPDATE TableName1 tn1 INNER JOIN TableName2 tn2 ON tn1.bValue1 = tn2.bValue2
  SET tn1.aValue1 = tn2.aValue2
  WHERE tn2.whateverProperty = something;

答案 1 :(得分:1)

UPDATE TableName1 t1 SET t1.aValue1 = t2.aValue2 FROM TableName2 t2 WHERE t2.whateverProperty = something;