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

Làm cách nào để viết một truy vấn Django với một truy vấn con như một phần của mệnh đề WHERE?

Truy vấn con cần phải là các truy vấn không được đánh giá ngay lập tức để việc đánh giá của chúng có thể bị hoãn lại cho đến khi truy vấn bên ngoài được chạy. get() không phù hợp với hóa đơn vì nó được thực thi ngay lập tức và trả về một cá thể đối tượng chứ không phải là Queryset .

Tuy nhiên, thay thế filter cho get và sau đó lấy [:1] Slice sẽ hoạt động:

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

Lưu ý cách tham chiếu trường trong OuterRef là một chuỗi ký tự chứ không phải là một biến.

Hơn nữa, các truy vấn con cần trả về một cột và một hàng (vì chúng được gán cho một trường), do đó, các giá trị values() và phần trên.

Ngoài ra, tôi chưa sử dụng truy vấn con trong Q đối tượng chưa; Tôi không chắc nó sẽ hoạt động. Trước tiên, bạn có thể phải lưu kết quả truy vấn con trong một chú thích và sau đó sử dụng nó cho các tính toán bộ lọc của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cột không tồn tại lỗi ngay cả khi sử dụng từ khóa 'as'

  2. thả db vào postgres

  3. Làm cách nào để xác định cột ARRAY trong phần di chuyển Postgresql của Phần tiếp theo?

  4. Phát triển vai trò quản trị viên:PG ::Lỗi:ERROR:quản trị viên quan hệ đã tồn tại

  5. Tìm kiếm jsonb postgres trong mảng với toán tử lớn hơn (với jsonb_array_elements)