如何使用 Where 语句从 Select 中更新

Posted

技术标签:

【中文标题】如何使用 Where 语句从 Select 中更新【英文标题】:How to Update from a Select using a Where statement 【发布时间】:2016-09-14 14:27:12 【问题描述】:

我在试图找到这个问题的答案时遇到了一点问题。我需要使用 Update 将新信息放在某些行中,使用带有 Where 语句的 Select。

在我的主表中,我有列

Equipment_ID  Type  Unit_Name  Address  Latitude  Longitude

在辅助表中,我有每个 ID 的更新纬度和经度

Equipment_ID Type  Latitude Longitude 

所以我需要将每个 ID 的新纬度和经度放在主表中的旧纬度和经度之上。我认为这样的事情会起作用,但在这个例子中,我在另一个问题中发现,他只更新了一个字段,这让我很困惑。

 UPDATE  a
 SET     a.marks = b.marks
 FROM    tempDataView a
   INNER JOIN tempData b
     ON a.Name = b.Name

如何更新纬度和经度,但作为 where 语句,仅在何时更新

WHERE main.Equipment_ID = aux.Equipment_ID
AND   main.Type         = aux.Type

提前感谢您的任何提示。

【问题讨论】:

【参考方案1】:

您不能在更新语句中使用JOIN,您需要在where 子句中进行“加入”。

另外:NOTFROM 子句中重复目标表:

UPDATE  main
   SET latitude = aux.latitude, 
       longitude = aux.longitude
FROM aux
WHERE main.Equipment_ID = aux.Equipment_ID
AND   main.Type         = aux.Type

【讨论】:

嗯,从技术上讲,您可以UPDATE 中使用JOIN,只是不要更新表引用。

以上是关于如何使用 Where 语句从 Select 中更新的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有 select 语句的 where 子句中使用比较运算符?

如何在 WHERE 子句中编写带有 SELECT 语句的 SQL DELETE 语句?

如何在 UNIX 批处理作业中将备份作为来自 oracle select 语句的插入查询?

在 Java DB2 JDBC 中:如何在 SELECT 语句的 WHERE 子句中使用空参数,其中值可以为空或不为空?

从select语句更新MySQL中的两列

在update语句中使用where子句的目的是啥?