sql - 多列子查询更新... SQL

标签 sql

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

我目前需要优化的内容。

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) 中。我一直遇到这样的问题:您只能发回一个列值。

有什么建议吗?我希望这一点很清楚。非常感谢大家。也祝你周末愉快。

最佳答案

如果 WHERE 子句的内容相同,您应该能够使用完整表引用来仅选择将在联接中显示的行。

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

关于sql - 多列子查询更新... SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557367/

相关文章:

sql - 在公共(public) API 中允许一些 SQL?

MySQL 查询以获得所需的输出

mysql - 在连接表之前使用聚合函数

SQL:如何对两个表进行分组?

sql - 具有动态谓词的表的最佳索引

sql - 在 MySQL : How to pass a table name as stored procedure and/or function argument?

C#/微软 SQL Server 2012 : Unicode symbols not displaying correctly (•)

c# - NHibernate 别名中的错误

java - Ormlite 查询生成器条件

mysql - DISTINCT 导致全表扫描