PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Korzystanie z funkcji okna w instrukcji aktualizacji

Błąd pochodzi z postgres, a nie z django. Możesz to przepisać jako:

WITH v_table_name AS
(
    SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
    FROM table_name
) 
UPDATE table_name set table_name.col1 = v_table_name.rn
FROM v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;  

Lub alternatywnie:

UPDATE table_name set table_name.col1 = v_table_name.rn
FROM  
(
    SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
    FROM table_name
) AS v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;

To działa. Właśnie przetestowałem to na postgres-9.6. Oto składnia UPDATE (zobacz opcjonalną listę_źródłową ).

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapisz dane wyjściowe z funkcji sql do pliku csv (KOPIUJ) z dynamiczną nazwą pliku

  2. Użyć adresu e-mail jako klucza podstawowego?

  3. Django cache.set() powodujący błąd zduplikowanego klucza

  4. Jak skonfigurować replikację klastrów do klastrów dla PostgreSQL

  5. HikariCP Postgresql Driver twierdzi, że nie akceptuje adresu URL JDBC