2016-03-28 3 views
1

Ich habe Funktion in MySql gespeichert Balance().Mysql wie Create Call-Store-Funktion

Ich möchte Benutzer mit einem Kontostand> 100 auswählen;

Dies funktioniert

select user, balance() from users where balance() > 100 

dies nicht

select user, balance as b from users where b > 100 

Ich will nicht Balance() zweimal nennen. Wie schreibe ich Abfrage wie in 1 Beispiel?

Antwort

2

MySQL erweitert die Verwendung der having Klausel. Wenn es keine expliziten group by ist, können Sie es wie ein where mit Tabellen-Aliases verwenden:

select user, balance() as b 
from users 
having b > 100; 

Ein alternativer Ansatz ist eine Unterabfrage zu verwenden. MySQL materialisiert jedoch Unterabfragen, so dass zusätzlicher Overhead entsteht.

+0

Vielen Dank. funktioniert gut – user1367713