来自 Select 语句的 Teradata 更新表 [英] Teradata Update Table from Select Statement

查看:64
本文介绍了来自 Select 语句的 Teradata 更新表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果标题不清楚,请见谅.基本上,我试图从多个表中选择某些记录,然后为返回的记录更新某个列值.

Sorry if the title is unclear. Basically I'm trying to select certain records from multiple tables then update a certain column value for the returned records.

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 中相同的操作,但出现以下错误:

I am tried doing the same thing in Teradata as I did in Oracle but I get the following error:

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. 

我在网上寻找解决方案,但没有成功.

I looked online for the solution but had no luck.

推荐答案

您是否在 Teradata 中尝试过以下语法:

Have you tried the following syntax with 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

这篇关于来自 Select 语句的 Teradata 更新表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆