PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql - Renumber cột

Thận trọng:

Điều này chỉ có ý nghĩa nếu ac_n_circ KHÔNG cột khóa chính.

Nếu bạn chắc chắn rằng bạn cần cái này (bạn có thực sự không?), Thì một cái gì đó như sau sẽ hoạt động:

with new_numbers as  (
   select row_number() over (order by ac_n_circ) as new_nr,
          ac_n_circ, 
          id
   from foo
) 
update foo
   set ac_n_circ = nn.new_nr
from new_numbers nn 
 where nn.id = foo.id;

Ngoài ra:

update foo 
  set ac_n_circ = nn.new_number
from (
   select id, 
          ac_n_circ,
          row_number() over (order by ac_n_circ) as new_number
   from foo
) nn
where nn.id = foo.id;

Cả hai câu lệnh đều giả định rằng có một cột khóa chính có tên là id .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql trả về 0 nếu giá trị trả về là null

  2. Trả lại Dấu thời gian Unix trong PostgreSQL

  3. Chuyển đổi cột gấu trúc sang danh sách PostgreSQL?

  4. Làm mới các chế độ xem cụ thể hóa với tính năng đồng thời

  5. Timezone_types khác nhau trên đối tượng DateTime