如何使用 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
子句中进行“加入”。
另外:NOT 在FROM
子句中重复目标表:
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 子句中使用空参数,其中值可以为空或不为空?