Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Perbarui dengan grup oleh

Pertanyaan Anda agak membingungkan. Anda mengatakan ingin menetapkan nilai b ke nilai minimum dari partisi a kolom itu b berada di baris dengan, sedangkan baris berisi b = 1 harus tetap tidak tersentuh.

Dari apa yang saya lihat dalam pertanyaan Anda sebagai komentar (saya menganggap itu adalah hasil yang Anda harapkan), Anda juga ingin mendapatkan nilai minimum yang mengikuti 1 dalam sebuah partisi - jadi pada dasarnya Anda menginginkan nilai minimum b yang lebih besar dari 1 .

Di bawah ini adalah kueri SQL yang melakukan ini

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

Keluaran setelah pembaruan

 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. pilih nilai kolom dinamis dari variabel tipe baris di pl sql

  2. Oracle SQL Query untuk mendaftar semua Skema dalam DB

  3. SQLException:Tidak ada Driver yang cocok Ditemukan untuk jdbc:Oracle:thin:@//localhost:1521/orcl

  4. PLS-00394:Jumlah nilai yang salah dalam daftar INTO dari pernyataan pengambilan

  5. SQL Challenge/Puzzle:Bagaimana cara menggabungkan rentang bersarang?