sql >> Databasteknik >  >> RDS >> Oracle

Uppdatera med grupp av

Din fråga är lite förvirrande. Du säger att du vill ställa in värdet b till ett minimivärde från partitionen a den kolumnen b är i rad med, medan raderna innehåller b = 1 bör förbli orörd.

Av vad jag kan se i din fråga som kommentarer (jag antar att det är din förväntade produktion) vill du också få det lägsta värdet som följer 1 inom en partition - så du vill i princip ha minimivärdet för b som är större än 1 .

Nedan finns en SQL-fråga som gör detta

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

Utdata efter uppdatering

 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. Mysql ordning efter specifika ID-värden

  2. Hur använder man exec-skal med PHP och MySQL?

  3. Uppgradering till den senaste Jira med den senaste versionen av MariaDB Server

  4. MAX() Funktion i MariaDB