sql >> Databasteknik >  >> RDS >> Mysql

Gör matte i MySQL från SELECT

Du kan inte använda alias som är definierade i SELECT-satsen för att beräkna andra kolumner som också finns i samma SELECT-sats. Du har minst tre alternativ:

  1. Upprepa underfrågan varje gång du behöver använda den. Detta har nackdelen att du kommer att behöva upprepa mycket kod. Eftersom dina underfrågor är långa och komplexa är detta ett oönskat alternativ.

  2. Använd en underfråga och en yttre fråga.

    SELECT
        *,
        (subtotal - payment) AS balance
    FROM
    (
         SELECT 
             ...,
             (...) AS subtotal,
             (...) AS payment
         FROM ... 
    ) T1
    
  3. Använd en JOIN istället för subselects. Detta är något mer komplicerat för din situation, men det kommer att vara bättre för prestandan om du någonsin behöver hämta mer än en rad.



  1. Hur man slår samman 2 eller fler datumintervall till 1

  2. Gridview finns inte i det aktuella sammanhanget

  3. Kombinera två mysql-frågor till en

  4. Hur man lagrar historiska poster i en historiktabell i SQL Server