首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle update查询NULL错误

Oracle update查询NULL错误
EN

Stack Overflow用户
提问于 2018-06-19 02:22:33
回答 2查看 157关注 0票数 0

我有3张桌子:

代码语言:javascript
复制
Table1
-------
ID
Field1
Field2


Table2
_______
ID
Name


Table2_OLD
____________
ID
Name

我需要将表2中的ID更新为来自Table2的ID,其中Table2.Name = Table2_OLD.Name

Table2和Table2_OLD中的ID是不同的,只有名称才能获得正确的ID:

代码语言:javascript
复制
SELECT Table2.ID 
FROM Table2 
  INNER JOIN Table2_OLD ON Table2.Name=Table2_OLD.Name

我写了以下update语句:

代码语言:javascript
复制
UPDATE Table1 SET Table1.ID=(SELECT DISTINCT t2.ID
                             FROM Table2 t2
                               INNER JOIN Table2_OLD t3 
                                       ON t2.Name=t3.Name 
                                      AND t2.ID=Table1.ID)

但它给了我一个错误

无法将Table1.ID更新为null`

我试着用

代码语言:javascript
复制
UPDATE Table1 SET Table1.ID = (SELECT DISTINCT t2.ID
                               FROM Table2 t2
                                 INNER JOIN Table2_OLD t3 
                                         ON t2.Name=t3.Name 
                                        AND t2.ID=Table1.ID 
                                        AND NOT t2.ID is null)

但得到了相同的错误。

有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-19 02:29:55

还没有测试过,但Oracle中的相关更新应该可以工作:

代码语言:javascript
复制
UPDATE table1 t1
SET id = (SELECT DISTINCT t2.id
          FROM table2 t2
          JOIN table2_old t3 ON
            t2.name = t3.name
          WHERE t3.id = t1.id
          )
WHERE EXISTS (
  SELECT 1
  FROM table2 t2
  WHERE t3.id = t1.id
)
票数 1
EN

Stack Overflow用户

发布于 2018-06-19 02:31:16

如果你想更新JOIN,你可以试试这个。

代码语言:javascript
复制
UPDATE (
    SELECT t2.ID t2ID,t1.ID t1ID
    FROM Table1 t1
    INNER JOIN Table2_OLD t2Old ON t1.ID= t2Old.ID
    INNER JOIN Table2 t2 ON t2.Name=t2Old.Name 
    WHERE t2.ID is NOT null
) 
SET t1ID = t2ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50915376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档