我正在尝试更新表中的一些代码,这些代码一直是空白的。我的临时表中包含所有代码,我正在尝试加入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 = ' ')
答案 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
);
注意:
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