2017-07-24 1 views
0

Bitte nehmen Sie sich einen Blick auf sie:Wie kann ich das Ergebnis einer Funktion in einer Variablen speichern?

SELECT calculate_both_score_and_reputation(u.id) AS sr FROM users u 

Es gibt so etwas wie dieses:

+----------+ 
| sr | 
+----------+ 
| 0,1322 | 
| 3, 232 | 
| -2, 9978 | 
| 31, 5745 | 
+----------+ 

Jetzt möchte ich das Ergebnis dieser Funktion in zwei verschiedene Spalten aufgeteilt:

SELECT SUBSTRING_INDEX(calculate_both_score_and_reputation(u.id),',', 1) AS s, 
     SUBSTRING_INDEX(calculate_both_score_and_reputation(u.id),',', -1) AS r, 
FROM users u 

Hier ist das Ergebnis:

+----+------+ 
| s | r | 
+----+------+ 
| 0 | 1322 | 
| 3 | 232 | 
| -2 | 9978 | 
| 31 | 5745 | 
+----+------+ 

Das Ergebnis ist wie erwartet. Aber wie Sie sehen, wird diese Funktion zweimal aufgerufen. Nun möchte ich wissen, wie kann ich diese Funktion einmal aufrufen und das Ergebnis in einer Variablen speichern und dann diese Variable analysieren?

Antwort

1

Sie können einfach Ihre Abfrage in einer Unterabfrage setzen und den Wert durch die Funktion in der äußeren Abfrage zurückgegeben verbrauchen:

SELECT SUBSTRING_INDEX(sr,',', 1) AS s, 
     SUBSTRING_INDEX(sr,',', -1) AS r 
FROM (
SELECT calculate_both_score_and_reputation(u.id) AS sr 
FROM users u) AS t 
Verwandte Themen