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

Postgres:Kesalahan menggunakan GROUP BY dan ORDER (di heroku)

Masalah langsung Anda adalah Anda menghasilkan SQL yang tidak valid untuk PostgreSQL:

SELECT category FROM "microposts" GROUP BY category ORDER BY microposts.created_at DESC

ORDER BY Anda tidak cocok dengan sisa kueri Anda. Anda tidak dapat menggunakan kolom dalam kueri yang dikelompokkan kecuali jika kolom tersebut juga dikelompokkan atau jika kolom tersebut muncul dalam fungsi agregat, itulah yang dimaksud dengan pesan kesalahan. Alasannya adalah PostgreSQL tidak akan tahu baris mana created_at untuk digunakan ketika sekelompok baris digabungkan oleh klausa GROUP BY; beberapa database hanya diam-diam memilih baris sendiri, PostgreSQL lebih memilih untuk menjadi ketat dan ingin Anda menghapus ambiguitas sendiri.

Coba tentukan sendiri urutannya:

@categories = Micropost.select("category").group("category").order("category")

Opsi lainnya adalah menggunakan DISTINCT alih-alih GROUP BY untuk menghindari duplikat:

@categories = Micropost.select('DISTINCT(category)')

BTW, Anda seharusnya tidak melakukan hal semacam itu dalam tampilan, Anda mungkin ingin memindahkannya ke pengontrol Anda.

Masalah Anda yang sebenarnya adalah bahwa Anda mengembangkan di atas satu database saat menggunakan yang lain. Sebaiknya Anda mengalihkan lingkungan pengembangan ke PostgreSQL 8.3 (jika Anda menerapkan ke database bersama Heroku) atau PostgreSQL 9.0 (jika Anda menerapkan ke database khusus).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tentukan Skema PostgreSQL di Django

  2. Bagaimana Mod() Bekerja di PostgreSQL

  3. Memperbarui kolom integer dari anggota jsonb gagal dengan:kolom bertipe integer tetapi ekspresi bertipe jsonb

  4. Tambahkan Indikator Ordinal ke Tanggal di PostgreSQL

  5. Impor file OSM ke PostGis di Windows10