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

Fai matematica in MySQL da SELECT

Non è possibile utilizzare gli alias definiti nella clausola SELECT per calcolare altre colonne che si trovano anche nella stessa clausola SELECT. Hai almeno tre opzioni:

  1. Ripetere la sottoquery ogni volta che è necessario utilizzarla. Questo ha lo svantaggio di dover ripetere molto codice. Poiché le tue sottoquery sono lunghe e complesse, questa è un'opzione indesiderabile.

  2. Usa una sottoquery e una query esterna.

    SELECT
        *,
        (subtotal - payment) AS balance
    FROM
    (
         SELECT 
             ...,
             (...) AS subtotal,
             (...) AS payment
         FROM ... 
    ) T1
    
  3. Usa un JOIN invece di sottoselezioni. Questo è leggermente più complesso per la tua situazione, ma sarà migliore per le prestazioni se dovessi recuperare più di una riga.