husker
Goto Top

MySQL Mit Ergebnis eines Subquery weiterrechnen, aber wie?

Hallo zusammen, ich habe aktuell ein kleines SQL Problem, wobei es da mehr um eine Optimierung geht.

Ich habe aktuell ein Select Query

SELECT Feld1, Feld2, (Subquery1) as 1, (subquery2) as 2 
FROM Table;

Soweit Funktioniert das ...

Aber ich möchte jetzt mit 1 und 2 weiter rechnen also quasi so:

SELECT Feld1, Feld2, (Subquery1) as 1, (subquery2) as 2, 2-1 as Diff
FROM Table;

Das Funktioniert leider nicht

SELECT Feld1, Feld2, (Subquery1) as 1, (subquery2) as 2, (subquery2)-(Subquery1) as Diff
FROM Table;

So Funktioniert es, was aber eigentlich Blödsinn ist da er jedes Subquery ja 2 mal ausrechnen muss
gibt es da einen eleganteren bzw. performanteren weg ?

Danke schon mal im voraus

Content-ID: 474160

Url: https://administrator.de/forum/mysql-mit-ergebnis-eines-subquery-weiterrechnen-aber-wie-474160.html

Ausgedruckt am: 15.04.2025 um 15:04 Uhr

140447
Lösung 140447 17.07.2019 aktualisiert um 15:44:35 Uhr
Goto Top
Kann man sollte man aber laur Docs wenn möglich vermeiden.
SELECT Feld1, Feld2, @var1 := (Subquery1) as 1, @var2 := (subquery2) as 2, @var2 - @var1 as Diff
FROM Table;
Oder
SELECT Feld1, Feld2, (Subquery1) as var1, (subquery2) as var2, (Select var1) - (Select var2) as Diff
FROM Table;
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
bloodstix
bloodstix 17.07.2019 um 15:29:06 Uhr
Goto Top
Hallo,

entweder direkt
SELECT (subquery2)-(Subquery1) as Diff FROM Table;
Oder als Sub-Select:
SELECT sq1-sq2 FROM ( SELECT (subquery1) as sq1, (subquery2) as sq2) )
Ist ungetestet, sollte aber so ungefähr machbar sein.

Grüße
bloody
Husker
Husker 17.07.2019 um 15:52:48 Uhr
Goto Top
Super genau das wollten ich wissen!

1000 x Dank!
Husker
Husker 17.07.2019 um 15:54:25 Uhr
Goto Top
gerade getestet ..

Mein Query 1,2 Sec
Deine Version 0,5 sec face-smile

Also genau das was ich wollte