PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да напиша Django заявка с подзаявка като част от клаузата WHERE?

Подзаявки трябва да бъдат заявки, които не се оценяват веднага, така че оценката им да може да бъде отложена, докато не се изпълни външната заявка. get() не отговаря на изискванията, тъй като се изпълнява незабавно и връща екземпляр на обект, а не Queryset .

Въпреки това, замествайки filter за get и след това вземане на [:1] slice трябва да работи:

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

Обърнете внимание как препратката към полето в OuterRef е низов литерал, а не променлива.

Освен това подзаявките трябва да върнат една колона и един ред (тъй като са присвоени на едно поле), следователно values() и нарязването по-горе.

Освен това не съм използвал подзаявка в Q обект още; Не съм сигурен, че ще се получи. Може да се наложи първо да запишете изхода на подзаявката в анотация и след това да я използвате за вашите изчисления на филтъра.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обявяване на Barman 1.0, Backup and Recovery Manager за PostgreSQL

  2. Защо условията на CROSS JOIN не работят в клаузата „ON“, а само в клаузата WHERE?

  3. Как да потискам INFO съобщенията, когато изпълнявате psql скриптове

  4. Управление на връзката в PostgreSQL:Ръководство

  5. Как мога да кажа на PostgreSQL да не прекъсва цялата транзакция, когато едно ограничение е неуспешно?