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

Jak napisać zapytanie Django z podzapytaniem jako częścią klauzuli WHERE?

Podzapytania muszą być zapytaniami, które nie są natychmiast oceniane, aby ich ocena mogła zostać odroczona do czasu uruchomienia zapytania zewnętrznego. get() nie pasuje do rachunku, ponieważ jest wykonywany natychmiast i zwraca instancję obiektu zamiast Queryset .

Jednak zastąpienie filter dla get a następnie wzięcie [:1] plasterek powinien działać:

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

Zwróć uwagę, jak odwołanie do pola w OuterRef jest literałem tekstowym, a nie zmienną.

Co więcej, podzapytania muszą zwracać pojedynczą kolumnę i pojedynczy wiersz (ponieważ są przypisane do jednego pola), stąd values() i powyższego krojenia.

Ponadto nie użyłem podzapytania w Q obiekt jeszcze; Nie jestem pewien, czy to zadziała. Być może będziesz musiał najpierw zapisać wynik podzapytania w adnotacji, a następnie użyć go do obliczeń filtra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć zagnieżdżone SELECT COUNT z aliasem w Postgresie

  2. Jaki jest odpowiednik CHARINDEX (SQL SERVER) w POSTGRRESQL?

  3. Jak uporządkować dane w sqlalchemy według listy

  4. Pandy - write_frame do sqlite - datetime64[ns]

  5. Python psycopg2 nie wstawia się do tabeli postgresql