【问题标题】:updating a column in table 1 by joining information from table 2通过连接表 2 中的信息来更新表 1 中的列
【发布时间】:2016-01-06 18:26:34
【问题描述】:

我的表 1 有我想要更新的 VIN。 表 1 和表 2 具有相同的 OBJ ID 和 POID(分别)。 我只知道表 2 中的设备 ID。

update table.1 set VIN = '5TDKK3DC6BS018229'
from table 2, table 1
where 2.device ID = 'TCAXLcKkt3'
and 2.OBJ = 1.POID;

我得到的 SQL 命令没有正确结束。

【问题讨论】:

  • 您是在 SQL Server 还是 MySQL 中运行此查询?
  • 另外,您似乎想用 table2 中的另一个列值更新 VIN。对吗?
  • @Sunil 我实际上正在使用 TOAD。是的,我正在尝试通过表 2 中的相应值在表 1 中添加 VIN。基本上我知道表 2 中的设备 ID。我正在更新表 1 中的 VIN。唯一连接两件事的是表 1 中的 OBJ 和 POID在表 2 中。
  • 所以table2中有一个名为VIN的列。如果是,请检查我刚刚发布的查询。
  • 我添加了查询假设table2.VIN 列存在。

标签: mysql sql-server toad


【解决方案1】:

确保删除查询末尾的分号,因为如果 TOAD 中有分号,某些数据库会报错。

如果您使用的是 SQL Server,则以下查询将起作用。

UPDATE table1
SET VIN = '5TDKK3DC6BS018229'
FROM table1
INNER JOIN table2 ON table1.POID = table2.OBJ
WHERE table2.deviceID = 'TCAXLcKkt3'

如果您想对 MySQL 进行相同的查询,请使用下面的查询。

UPDATE table1 a 
       JOIN table2 b 
         ON a.poid = b.obj 
SET    a.vin = '5TDKK3DC6BS018229' 
WHERE  b.deviceid = 'TCAXLcKkt3' 

如果您使用的是 Oracle,请使用以下查询。

UPDATE table1 
SET    table1.vin = '5TDKK3DC6BS018229'
 where exists (SELECT table2.obj 
                     FROM   table2 
                     WHERE  table2.obj = table1.poid 
                            AND table2.deviceid = 'TCAXLcKkt3') 

【讨论】:

  • MYSQL 的第二次查询给了我缺少 Set 关键字错误。
  • 第二个查询是针对 MySQL 的,但您似乎想要查询 Oracle。让我为您创建一个 Oracle 查询。
  • 我已经发布了查询的 Oracle 版本。请检查一下。
  • 我认为这行不通。 table2 没有 vin。
  • 哦,我以为您在原始帖子下的评论中说过。那么您想将 VIN 更新为什么值?表 2 中的哪一列将取代 VIN?
【解决方案2】:

错误消息看起来您正在使用Oracle

如果没有错,这就是你要找的东西

UPDATE table1 
SET    vin = '5TDKK3DC6BS018229' 
WHERE  EXISTS (SELECT 1 
               FROM   table2 B 
               WHERE  table1.obj = B.poid 
                      AND B."device id" = 'TCAXLcKkt3')

在 Oracle 中使用 Join 从另一个表更新表尝试以下语法

UPDATE 
(SELECT A.VIN
 FROM table1 A
 INNER JOIN table2 B
 ON A.OBJ = B.POID
 WHERE B."device ID" = 'TCAXLcKkt3'
) t
SET T.VIN = '5TDKK3DC6BS018229'

【讨论】:

  • 给我 A.VIN 是无效的标识符
  • 抱歉消息慢。我正在更新查询。我得到 B.device_ID 是无效的标识符。对于您给出的第一个查询。
猜你喜欢
  • 2018-11-17
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2014-07-23
  • 2021-03-25
  • 2020-03-19
  • 2018-04-11
相关资源
最近更新 更多