sql >> Database >  >> RDS >> Mysql

Django raw()-query, berekend veld in WHERE-clausule

Het heeft eigenlijk niets met Django zelf te maken, maar met de manier waarop MySQL werkt.

U kunt geen aliassen gebruiken in WHERE-voorwaarden, omdat de evaluatie van de WHERE-component voorafgaat aan de evaluatie van de aliassen.

U kunt ofwel:

  • Herhaal de clausule:

    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''')
    
  • Maak een subselectie:

    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''')
    


  1. Databasestructuur synchroniseren tussen applicaties

  2. Oracle installeren op een Mac

  3. SQL Server-bestemming versus OLE DB-bestemming

  4. Hoe de tijdzoneregio voor JDBC Connection in te stellen en te voorkomen dat de SqlException-tijdzoneregio niet wordt gevonden?