PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apa cara yang benar untuk menggunakan perbedaan pada (Postgres) dengan SqlAlchemy?

Apa yang tampaknya Anda cari adalah DISTINCT ON ... ORDER BY idiom di Postgresql untuk memilih hasil (N =1 ). Jadi, alih-alih mengelompokkan dan mengagregasi saja

event_list = Table.query.\
    distinct(Table.name).\
    filter_by(**filter_by_query).\
    filter(*queries).\
    order_by(Table.name, Table.timestamp.desc()).\
    all()

Ini akan berakhir dengan memilih baris yang "dikelompokkan" berdasarkan nama, yang memiliki nilai stempel waktu terbesar.

Anda tidak ingin menggunakan tanda bintang hampir sepanjang waktu, tidak dalam kode aplikasi Anda, kecuali jika Anda melakukan kueri ad-hoc manual. Tanda bintang pada dasarnya adalah "semua kolom dari FROM table/relation", yang kemudian dapat mematahkan asumsi Anda nanti, jika Anda menambahkan kolom, menyusun ulang, dan semacamnya.

Jika Anda ingin mengurutkan baris yang dihasilkan berdasarkan stempel waktu di hasil akhir, Anda dapat menggunakan misalnya Query.from_self() untuk mengubah kueri menjadi subkueri, dan memesan dalam kueri terlampir:

event_list = Table.query.\
    distinct(Table.name).\
    filter_by(**filter_by_query).\
    filter(*queries).\
    order_by(Table.name, Table.timestamp.desc()).\
    from_self().\
    order_by(Table.timestamp.desc()).\
    all()



  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 json menyukai kueri

  2. Masalah menggunakan pg_search dengan asosiasi polimorfik

  3. Nilai array ditampilkan di baris demi baris untuk id tunggal menggunakan Postgresql

  4. PostgreSQL:Temukan izin untuk elemen, jelajahi hingga root

  5. Bagaimana saya bisa mengirim email dari pemicu PostgreSQL?