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-Key: 474160

Url: https://administrator.de/contentid/474160

Printed on: April 20, 2024 at 10:04 o'clock

Mitglied: 140447
Solution 140447 Jul 17, 2019 updated at 13:44:35 (UTC)
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
Member: bloodstix
bloodstix Jul 17, 2019 at 13:29:06 (UTC)
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
Member: Husker
Husker Jul 17, 2019 at 13:52:48 (UTC)
Goto Top
Super genau das wollten ich wissen!

1000 x Dank!
Member: Husker
Husker Jul 17, 2019 at 13:54:25 (UTC)
Goto Top
gerade getestet ..

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

Also genau das was ich wollte