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

Bagaimana cara saya menulis kueri Django dengan subkueri sebagai bagian dari klausa WHERE?

Subquery perlu query yang tidak segera dievaluasi sehingga evaluasinya dapat ditunda sampai outer query dijalankan. get() tidak sesuai dengan tagihan karena dieksekusi segera dan mengembalikan instance objek daripada Queryset .

Namun, mengganti filter untuk get dan kemudian mengambil [:1] irisan harus bekerja:

StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]

Perhatikan bagaimana referensi bidang dalam OuterRef adalah literal string, bukan variabel.

Selain itu, subquery perlu mengembalikan satu kolom dan satu baris (karena mereka ditugaskan ke satu bidang), maka values() dan irisan di atas.

Juga, saya belum pernah menggunakan subquery dalam Q objek belum; Saya tidak yakin itu akan berhasil. Anda mungkin harus menyimpan output subquery dalam anotasi terlebih dahulu, lalu menggunakannya untuk penghitungan filter Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TypeError:tidak dapat lepas dari psycopg2.extensions.Binary to binary

  2. Jalankan kueri tab silang dinamis

  3. Memigrasi pernyataan Oracle MERGE ke pernyataan UPSERT PostgreSQL

  4. Cara Mengembalikan Hasil Kueri sebagai Daftar Dipisahkan Koma di PostgreSQL

  5. Kesalahan sintaksis PostgreSQL dalam kueri berparameter pada tanggal $1