连接语法

Mic*_*iel 0 sql oracle oracle11g

无法获取此语句来更新表,我几乎可以肯定我的问题是串联语法.

请看看,如果你看到我在这里出错了,请告诉我..

谢谢 !!

UPDATE TAB1 s  
        SET s.user_NUM =   
             (select e.USER# 
                  from TAB2 e   
                  where ('e.LAST_NAME'||','||' E.FIRST_NAME')= s.DEALER);
Run Code Online (Sandbox Code Playgroud)

APC*_*APC 7

我认为那些应该是TAB2中的专栏?如果是这样,您需要删除引号:

UPDATE TAB1 s
        SET s.user_NUM =   
             (select e.USER# 
                  from TAB2 e   
                  where (e.LAST_NAME||', '||E.FIRST_NAME)= s.DEALER);
Run Code Online (Sandbox Code Playgroud)

否则你想要匹配TAB1中的记录where DEALER = 'e.LAST_NAME, E.FIRST_NAME'(即文字),我认为这根本不是你的意思.


"当我在逗号后面放置一个空格时,我得到一个错误,即单行查询返回多行."

因此,TAB2中的多行与TAB1中的行匹配.这现在成为您数据的调查.

如果只有一个发生e.USER#e.LAST_NAME||', '||E.FIRST_NAME你很好:只需将它添加到DISTINCT子查询.用以下方法检查:

select e.LAST_NAME||', '||E.FIRST_NAME
       , count(distinct e.USER#) 
from TAB2 e   
group by e.LAST_NAME||', '||E.FIRST_NAME
      having count(distinct e.USER#) > 1
Run Code Online (Sandbox Code Playgroud)

如果该查询返回任何行,您将需要决定如何处理多个匹配.

同样,如果TAB2中没有与TAB1中的行匹配的行,则需要确定要采取的操作.此刻将设置s.user_NUM为NULL.也许这就是你想要的.

这些是关于业务规则的决定:只有您知道自己想要做什么.