Oracle
 sql >> база данни >  >> RDS >> Oracle

Актуализиране с групиране по

Въпросът ви е малко объркващ. Казвате, че искате да зададете стойност b до минимална стойност от дял a тази колона b е в ред с, докато редовете, съдържащи b = 1 трябва да остане недокоснат.

От това, което виждам във вашия въпрос като коментари (предполагам, че това е вашият очакван резултат), вие също искате да получите минималната стойност, която следва 1 в рамките на дял - така че основно искате минималната стойност на b който е по-голям от 1 .

По-долу е SQL заявка, която прави това

UPDATE t1 alias
  SET b = (
    SELECT min(b) 
    FROM t1 
    WHERE alias.a = t1.a 
      AND t1.b > 1 -- this would get the minimum value higher than 1
    GROUP BY a
  )
  WHERE alias.b > 1 -- update will not affect rows with b <= 1

Резултат след актуализация

 a | b 
---+---
 1 | 0
 1 | 1
 2 | 1
 2 | 2
 3 | 1
 3 | 2
 3 | 2
 4 | 1
 4 | 3
 4 | 3
 4 | 3



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Настройки на времето за изчакване на връзката за Oracle база данни

  2. Функция ASIN() в Oracle

  3. Автоматично увеличение в Oracle без използване на тригер

  4. Как да разрешите ORA-06512 на ред номер

  5. Преобразуване на деня от годината в дата, когато някои формати на дата имат DDYYYY, а някои имат DDDYYYY в oracle