使用case语句更新查询,导致缺少关键字错误

时间:2014-02-21 17:08:36

标签: mysql sql oracle sql-update case

有2个表INFOADDR
ADDR有4列ID, LINE_1_ADDR, LINE_2_ADDR, TEMP_ADDR_ID INFO有4列ID, FIRST_NAME, LAST_NAME, ADDR_ID 我想在INFO.ADDR_IDADDR.ID

匹配时,将INFO.ADDR_ID中的数据替换为ADDR.TEMP_ADDR_ID

我有以下UPDATE查询,它给出了错误

  

ORA-00905:缺少关键字

以下是我的代码:

UPDATE INFO SET INFO.ADDR_ID = (CASE
WHEN ADDR.TEMP_ADDR_ID = INFO.ADDR_ID
THEN INFO.ADDR_ID = ADDR.ID
END);

我是涉及案例的SQL查询的新手,不知道哪里出错了。请帮忙!

由于

2 个答案:

答案 0 :(得分:1)

如果你使用MYSQL

 UPDATE INFO 
 INNER JOIN ADRR ON ADDR.TEMP_ADDR_ID = INFO.ADDR_ID
 SET INFO.ADDR_ID = ADDR.ID

如果您使用ORACLE

使用此

UPDATE INFO SET INFO.ADDR_ID = (SELECT ADRR.ID
                                FROM ADRR  
                                WHERE ADDR.TEMP_ADDR_ID = INFO.ADDR_ID)

答案 1 :(得分:0)

编辑:获取更多信息后,echo_Me的方法是更新的正确方法。

UPDATE INFO 
JOIN ADDR ON /*your Join condition*/
SET INFO.ADDR_ID = ADDR.ID