sql >> Databáze >  >> RDS >> PostgreSQL

Jak napíšu dotaz Django s poddotazem jako součást klauzule WHERE?

Poddotazy musí jít o dotazy, které nejsou okamžitě vyhodnocovány, aby bylo možné jejich vyhodnocení odložit až do spuštění vnějšího dotazu. get() neodpovídá účtu, protože se provede okamžitě a vrátí instanci objektu spíše než Queryset .

Nicméně, nahrazením filter pro get a poté si vezmete [:1] řez by měl fungovat:

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

Všimněte si, jak je odkaz na pole v OuterRef je spíše řetězcový literál než proměnná.

Navíc poddotazy musí vracet jeden sloupec a jeden řádek (protože jsou přiřazeny k jednomu poli), proto values() a krájení výše.

Také jsem nepoužil poddotaz v Q objekt ještě; Nejsem si jistý, že to bude fungovat. Možná budete muset nejprve uložit výstup poddotazu do anotace a poté ji použít pro výpočty filtru.



  1. Existuje nějaká hashovací funkce v PL/SQL?

  2. Kdy použít jednoduché uvozovky, dvojité uvozovky a zadní zaškrtnutí v MySQL

  3. Součet hodnot vícerozměrného pole podle klíče bez smyčky

  4. Kurzor pro smyčku v Oracle