更新中的无效标识符
问题描述:
我正在尝试更新表中空白处的一些代码。我的临时表中有所有的代码,我试图加入身份证号码。我相信我得到无效的标识符变量,因为我在加入表之前从我的临时表中声明变量,但我尝试了一些变化,并且似乎无法使其工作。这是我到目前为止。我意识到这是新手,但我卡住了。更新中的无效标识符
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 = ' ')
答
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
答
一个在甲骨文的方法是使用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
。
您将得到与OP相同的错误:名称't2'仅在where子句中的子查询中可见,它在'set'子句中不可见。 – mathguy