【问题标题】:Update unique table SQL更新唯一表 SQL
【发布时间】:2017-12-12 07:57:22
【问题描述】:

你好,我有这张桌子。

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';

谢谢。

【问题讨论】:

    标签: sql oracle exists


    【解决方案1】:

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

    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 只在子查询中知道,在外部查询中不知道。

    【讨论】:

    • 你好我用这个qry但不是函数。 ORA-01427: 单行子查询返回多行。我理解这个问题,但没有遇到这个错误。
    • @SantiagoEspitia 。 . .显然,您有一些 addr 值具有两个或更多 'pri' 行。 and rownum = 1 任意选择其中之一。
    【解决方案2】:

    以下将做你想做的事:

    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'
    

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2014-02-13
      • 2022-12-06
      • 2022-09-23
      • 2018-09-07
      相关资源
      最近更新 更多