更新中的标识符无效

时间:2017-11-10 21:29:10

标签: sql oracle sql-update

我正在尝试更新表中的一些代码,这些代码一直是空白的。我的临时表中包含所有代码,我正在尝试加入ID号。我相信我得到了无效的标识符变量,因为我在加入表之前从我的临时表中声明了变量但是我尝试了一些变化而且似乎无法使其工作。这是我到目前为止所拥有的。我意识到这是相当新手,但我被卡住了。

UPDATE table_1 t1
SET t1.code = t2.code
WHERE EXISTS (SELECT 1 FROM table_2 t2
                      WHERE t2.id_number = t1.id_number
                      AND t1.code = ' ')

2 个答案:

答案 0 :(得分:0)

Oracle中的一种方法是使用merge,但您也可以使用update执行此操作:

UPDATE table_1 t1
    SET t1.code = (SELECT t2.code
                   FROM table_2 t2
                   WHERE t2.id_number = t1.id_number
                  )
WHERE (t1.code = ' ' OR t1.code IS NULL) AND
      EXISTS (SELECT 1
              FROM table_2 t2
              WHERE t2.id_number = t1.id_number
             );

注意:

    {li> t2未在SET中理解,因为它从未被定义过。
  • t1.code上的条件应该直接放在WHERE而不是子查询中 - 条件实际上与子查询无关。
  • 我添加了NULL支票以及空格检查。
  • 我相信您需要t1.id_number而不是t1_id_number

答案 1 :(得分:-1)

UPDATE table_1 t1
SET t1.code = t2.code
WHERE EXISTS (SELECT 1 FROM table_2 t2 WHERE t2.id_number = 
**t1_id_number** AND t1.code = ' ')

更改 t1_id_number 到t1.id_number