sql >> Database >  >> RDS >> PostgreSQL

Hoe schrijf ik een Django-query met een subquery als onderdeel van de WHERE-component?

Subquery's moeten query's zijn die niet onmiddellijk worden geëvalueerd, zodat hun evaluatie kan worden uitgesteld totdat de buitenste query wordt uitgevoerd. get() past niet bij de rekening omdat het onmiddellijk wordt uitgevoerd en een objectinstantie retourneert in plaats van een Queryset .

Echter, het vervangen van filter voor get en dan een [:1] . nemen slice zou moeten werken:

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

Merk op hoe de veldverwijzing in OuterRef is een letterlijke tekenreeks in plaats van een variabele.

Bovendien moeten subquery's een enkele kolom en een enkele rij retourneren (omdat ze zijn toegewezen aan een enkel veld), vandaar de values() en het snijden hierboven.

Ik heb ook geen subquery gebruikt in een Q object nog; Ik weet niet zeker of het zal werken. Mogelijk moet u de uitvoer van de subquery eerst opslaan in een annotatie en die vervolgens gebruiken voor uw filterberekeningen.



  1. PostgreSQL 9-installatie op Windows:kan niet binnen het TEMP-omgevingspad schrijven.

  2. Snelste manier om grote CSV-bestanden in MySql te importeren met MySql CLI

  3. Lezen van bestand naar variabele - Bash Script take2

  4. hoe het python-script uit te voeren vanuit de mysql-query?