更新唯一表SQL

更新唯一表SQL,sql,oracle,exists,Sql,Oracle,Exists,你好,我有这张桌子 ADDR | STATE | ID CRA.20 15 | REP | (null) CRA.20 15 | REP | (null) CRA.20 15 | REP | (null) CRA.20 15 | PRI | RR_88_JK 我需要把这张桌子改一下 ADDR | STATE | ID CRA.20 15 | REP | RR_88_JK CRA.20 15 | REP | RR

你好,我有这张桌子

ADDR      | STATE  |  ID 
CRA.20 15 |  REP   |  (null)
CRA.20 15 |  REP   |  (null)
CRA.20 15 |  REP   |   (null)
CRA.20 15 |  PRI   |   RR_88_JK
我需要把这张桌子改一下

ADDR      | STATE |   ID 
CRA.20 15 |  REP  |   RR_88_JK
CRA.20 15 |  REP  |   RR_88_JK
CRA.20 15 |  REP  |   RR_88_JK
CRA.20 15 |  PRI  |   RR_88_JK
我有这个QRY,但没有功能。你有一个主意吗

UPDATE TABLE_A A
   SET a.ID = b.ID
 WHERE EXISTS
           (SELECT b.ID
              FROM TABLE_A B
             WHERE a.ADDR = B.ADDR  AND b.STATE = 'PRI')
 and  A.STATE = 'REP';

谢谢。

您需要一个子查询来设置值:

UPDATE TABLE_A A
   SET a.ID = (SELECT b.ID
               FROM TABLE_A B
               WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI' AND rownum = 1
              )
   WHERE EXISTS (SELECT b.ID
                 FROM TABLE_A B
                 WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI'
                ) AND
         A.STATE = 'REP';

B
仅在子查询中已知,而在外部查询中未知。

您需要子查询来设置值:

UPDATE TABLE_A A
   SET a.ID = (SELECT b.ID
               FROM TABLE_A B
               WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI' AND rownum = 1
              )
   WHERE EXISTS (SELECT b.ID
                 FROM TABLE_A B
                 WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI'
                ) AND
         A.STATE = 'REP';

B
仅在子查询中已知,而不在外部查询中已知。

以下操作将满足您的要求:

UPDATE TABLE_A A
   SET a.ID = (SELECT MIN(ID)
                 FROM TABLE_A
                 WHERE ID IS NOT NULL AND
                       STATE = 'PRI')
   WHERE ID IS NULL AND
         STATE = 'REP'

祝你好运。

以下内容将满足你的要求:

UPDATE TABLE_A A
   SET a.ID = (SELECT MIN(ID)
                 FROM TABLE_A
                 WHERE ID IS NOT NULL AND
                       STATE = 'PRI')
   WHERE ID IS NULL AND
         STATE = 'REP'

祝您好运。

您好,我使用此qry,但不使用函数。ORA-01427:单行子查询返回多行。我理解这个问题,但没有遇到这个错误。@SantiagoEspitia。显然,有些
addr
值有两行或更多的
'pri'
行。
和rownum=1
任意选择其中一个。您好,我使用这个qry函数,但不使用它。ORA-01427:单行子查询返回多行。我理解这个问题,但没有遇到这个错误。@SantiagoEspitia。显然,有些
addr
值有两行或更多的
'pri'
行。
和rownum=1
可以任意选择其中一个。