2009-04-07 5 views
1

ich eine MySQL-Abfrage haben, so etwas wie dieses:mysql query, Wiederverwendung Spaltennamen in Abfrage

SELECT users*100 as totalusers, totalusers*90 AS totalsalerys FROM table 

Wie man sehen kann ich die totalusers wiederverwendet werden soll, wenn die Berechnung totalsalerys so son't Ich habe das gleiche schreiben Code erneut. Das scheint in mysql nicht zu funktionieren, gibt es einen anderen einfachen Weg, dies zu tun?

Meine Abfrage ist nur ein Beispiel, ändern Sie die *100 und *90 zu einigen sehr langen Formel und man könnte sehen, was ich meine ..

Antwort

1

Ich glaube, würden Sie kopieren/einfügen die Formel oder eine Unterabfrage verwenden. Das Folgende würde in T-SQL funktionieren, aber ich denke, es würde auch in MySQL funktionieren, da es ziemlich einfach ist.

SELECT 
    x.totalusers, x.totalusers*90 AS totalsalerys 
FROM (
     SELECT users*100 as totalusers FROM table 
) x 
2
SELECT (@r := users * 100) as totalusers, 
     @r * 90 AS totalsalerys 
FROM table 

Sie können auch eine Unterabfrage als @Tom Ritter Ratschläge verwenden, aber es ist nicht freundlich zu ORDER BY ... LIMIT ... Klausel.

In MySQL werden alle Ergebnisse der inneren Unterabfrage vor abgerufen, die alle Filter in der äußeren Unterabfrage anwenden.

+0

Wie wäre es mit der Summe oder Zählung auf Benutzerfeld? Wie würde es in jeder Zeile separat angewendet werden? nur ein Versuch – Junaid