sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur skriver jag en Django-fråga med en underfråga som en del av WHERE-satsen?

Subqueries måste vara frågor som inte omedelbart utvärderas så att deras utvärdering kan skjutas upp tills den yttre frågan körs. get() passar inte räkningen eftersom den exekveras omedelbart och returnerar en objektinstans snarare än en Queryset .

Men ersätter filter för get och sedan ta en [:1] skiva borde fungera:

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

Notera hur fältreferensen i OuterRef är en bokstavlig sträng snarare än en variabel.

Dessutom måste underfrågor returnera en enda kolumn och en enda rad (eftersom de är tilldelade ett enda fält), därav values() och skivningen ovan.

Dessutom har jag inte använt en underfråga i en Q objekt ännu; Jag är inte säker på att det kommer att fungera. Du kanske måste spara underfrågans utdata i en anteckning först och sedan använda den för dina filterberäkningar.



  1. Eventuella nackdelar med att använda ExecuteReaderAsync från C# AsyncCTP

  2. regexp_matches bättre sätt att bli av med återkommande krulliga parenteser

  3. SQL Server Infoga om den inte finns

  4. Hur kan jag skapa och ladda en andra databas i ddev?