sql >> Database teknologi >  >> RDS >> Mysql

Django raw()-forespørgsel, beregnet felt i WHERE-sætning

Det har faktisk ikke noget med Django selv at gøre, men med måden MySQL fungerer på.

Du kan ikke bruge aliaser i WHERE-betingelser, fordi WHERE-sætningsevaluering går forud for aliasevalueringen.

Du kan enten:

  • Gentag klausulen:

    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''')
    
  • Udfør et undervalg:

    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. Hurtigt script, der returnerer alle egenskaber fra SERVERPROPERTY() i SQL Server 2017/2019

  2. MS-Access baseklasse og afledte objekter

  3. Indsættelse af SQL Server-data med Oracle® SQL*Loader

  4. Betyder VARCHAR-størrelsesgrænsen noget?