sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan skriver jeg en Django-forespørgsel med en underforespørgsel som en del af WHERE-sætningen?

Underforespørgsler skal være forespørgsler, der ikke umiddelbart evalueres, så deres evaluering kan udskydes, indtil den ydre forespørgsel køres. get() passer ikke til regningen, da den udføres med det samme og returnerer en objektforekomst i stedet for et Queryset .

Men ved at erstatte filter for get og derefter tage en [:1] skive burde virke:

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

Bemærk, hvordan feltreferencen i OuterRef er en streng bogstavelig snarere end en variabel.

Desuden skal underforespørgsler returnere en enkelt kolonne og en enkelt række (da de er tildelt et enkelt felt), deraf values() og udskæringen ovenfor.

Jeg har heller ikke brugt en underforespørgsel i en Q objekt endnu; Jeg er ikke sikker på, at det vil virke. Du skal muligvis først gemme underforespørgselsoutputtet i en annotation og derefter bruge det til dine filterberegninger.



  1. MySQL:foretrukken kolonnetype for (produkt)priser?

  2. Oracle Parallel Query-adfærd med IDE-værktøjer som SQL-udvikler eller Toad

  3. (PHP):Advarsel:include_once, kunne ikke åbne stream:Tilladelse nægtet

  4. PostgreSQL:Giv alle tilladelser til en bruger på en PostgreSQL-database