抱歉,标题不清楚。基本上,我试图从多个表中选择某些记录,然后为返回的记录更新某个列值。
T-SQL实施
UPDATE CUSTOMERS SET LIKES_US = 'Y' FROM RESTAURANT REST INNER JOIN CUSTOMERS CUST ON REST.LINK_ID = CUST.LINK_ID WHERE REST.REST_TYPE = 'Diner' AND CUST.LIKES_US IS NULL
甲骨文
UPDATE (SELECT CUST.LIKES_US FROM CUSTOMERS CUST INNER JOIN RESTAURANT REST ON CUST.LINK_ID=REST.LINK_ID WHERE REST.REST_TYPE = 'Diner' AND CUST.LIKES_US IS NULL) NEW_CUST SET NEW_CUST.LIKES_US = 'Y';
我尝试在Teradata中执行与在Oracle中相同的操作,但是出现以下错误:
Executed as Single statement. Failed [3707 : 42000] Syntax error, expected something like a name or a Unicode delimited identifier or an 'UDFCALLNAME' keyword between the 'UPDATE' keyword and '('. Elapsed time = 00:00:00.003 STATEMENT 1: Unknown failed.
我在网上寻找解决方案,但没有运气。
您是否使用Teradata尝试了以下语法:
UPDATE CUSTOMERS C1 FROM (SELECT C2.LINK_ID FROM CUSTOMERS C2 INNER JOIN RESTAURANTS R2 ON C2.LINK_ID = R2.LINK_ID WHERE R2.REST_TYPE = 'DINER' AND C2.LIKES_US IS NULL) D1 SET LIKES_US = 'Y' WHERE C1.LINK_ID = C2.LINK_ID