sql >> Databáze >  >> RDS >> Oracle

Aktualizovat se skupinou podle

Vaše otázka je trochu matoucí. Říkáte, že byste chtěli nastavit hodnotu b na minimální hodnotu z oddílu a sloupec b je v řádku s, zatímco řádky obsahující b = 1 by měl zůstat nedotčen.

Z toho, co vidím ve vaší otázce jako komentáře (předpokládám, že je to váš očekávaný výstup), chcete také získat minimální hodnotu, která následuje po 1 v rámci oddílu - takže v podstatě chcete minimální hodnotu b která je větší než 1 .

Níže je uveden SQL dotaz, který to dělá

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

Výstup po aktualizaci

 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. Nejjednodušší způsob, jak ověřit odkaz na e-mail PHP

  2. Získejte jazyk aktuálně používaný v SQL Server

  3. Vánoce přicházejí brzy (Oracle 12.2)

  4. Vložte slovník do seznamu do databáze v pythonu