2017-11-10 71 views
0

我正在嘗試更新表中空白處的一些代碼。我的臨時表中有所有的代碼,我試圖加入身份證號碼。我相信我得到無效的標識符變量,因爲我在加入表之前從我的臨時表中聲明變量,但我嘗試了一些變化,並且似乎無法使其工作。這是我到目前爲止。我意識到這是新手,但我卡住了。更新中的無效標識符

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 = ' ') 

回答

-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

+0

您將得到與OP相同的錯誤:名稱't2'僅在where子句中的子查詢中可見,它在'set'子句中不可見。 – mathguy

0

一個在甲骨文的方法是使用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 
      ); 

備註:

  • t2SET中沒有被理解,因爲它從未被定義過。
  • t1.code上的條件應該直接在WHERE中,而不是在子查詢中 - 條件確實與子查詢無關。
  • 我添加了NULL支票以及空格檢查。
  • 我相信你想要t1.id_number而不是t1_id_number