sql >> Base de Datos >  >> RDS >> Mysql

Consulta Django raw (), campo calculado en la cláusula WHERE

En realidad, no tiene nada que ver con Django en sí, sino con la forma en que funciona MySQL.

No puede usar alias en condiciones WHERE, porque la evaluación de la cláusula WHERE precede a la evaluación de alias.

Puedes:

  • Repita la cláusula:

    Company.objects.raw('''SELECT *,core_location.a + core_location.b as dist
    FROM core_location,core_company
    WHERE (core_location.a + core_location.b)<10    
    ORDER BY dist''')
    
  • Haz una subselección:

    Company.objects.raw('''SELECT * FROM (
        SELECT *,core_location.a + core_location.b as dist
        FROM core_location,core_company            
    ) as subselect
    WHERE dist<10  
    ORDER BY dist''')