UPDATE TGA_CHANNEL T1
INNERJOIN(SELECT DOOR_NAME FROM TGA_DOOR ) T ON T1.DOOR_ID = T.DOOR_ID
SET T1.DOOR_NAME = T.DOOR_NAME
WHERE
T1.DOOR_ID = T.DOOR_ID 这个sql报错ORA-00971: missing SET keyword
问题在于,Oracle不支持使用INNERJOIN在UPDATE语句中。你需要使用子查询或者MERGE语句来实现这个功能。
以下是使用子查询的方法:
UPDATE TGA_CHANNEL T1
SET T1.DOOR_NAME =(SELECT T.DOOR_NAME FROM TGA_DOOR T WHERE T1.DOOR_ID = T.DOOR_ID)WHEREEXISTS(SELECT1FROM TGA_DOOR T WHERE T1.DOOR_ID = T.DOOR_ID)
这个语句会更新TGA_CHANNEL表中的DOOR_NAME字段,将其设置为TGA_DOOR表中对应的DOOR_NAME值。
如果你想使用MERGE语句,可以参考以下的例子:
MERGEINTO TGA_CHANNEL T1
USING(SELECT DOOR_ID, DOOR_NAME FROM TGA_DOOR) T
ON(T1.DOOR_ID = T.DOOR_ID)WHENMATCHEDTHENUPDATESET T1.DOOR_NAME = T.DOOR_NAME