Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Machen Sie Mathe in MySQL von SELECT

Sie können keine Aliase verwenden, die in der SELECT-Klausel definiert sind, um andere Spalten zu berechnen, die sich ebenfalls in derselben SELECT-Klausel befinden. Sie haben mindestens drei Möglichkeiten:

  1. Wiederholen Sie die Unterabfrage jedes Mal, wenn Sie sie verwenden müssen. Dies hat den Nachteil, dass Sie viel Code wiederholen müssen. Da Ihre Unterabfragen lang und komplex sind, ist dies eine unerwünschte Option.

  2. Verwenden Sie eine Unterabfrage und eine äußere Abfrage.

    SELECT
        *,
        (subtotal - payment) AS balance
    FROM
    (
         SELECT 
             ...,
             (...) AS subtotal,
             (...) AS payment
         FROM ... 
    ) T1
    
  3. Verwenden Sie einen JOIN anstelle von Unterauswahlen. Dies ist für Ihre Situation etwas komplexer, aber es ist besser für die Leistung, wenn Sie jemals mehr als eine Zeile abrufen müssen.