2016-11-11 2 views
0

Ich habe drei benutzerdefinierte Variablen, und habe nur herausgefunden, wie zu höchstens zwei hintereinander zu verketten, durch Ausführen der folgenden Abfrage.Verketten von benutzerdefinierten Variablen in mysql

SET @sql := (CONCAT(@sql_q1, ' UNION ', @sql_med));

Ich möchte auch meine anderen benutzerdefinierten Variablen, @ sql_q3 ist, so dass @sql speichert @ sql_q1, @sql_med und @ sql_q3 verketten.

Gibt es eine Möglichkeit, wie ich drei benutzerdefinierte Variablen ähnlich wie oben verketten kann?

Alle drei Variablen verwenden dieselben Daten aus derselben Tabelle. Es ist also kein Problem, sie zu verbinden, da ich zwei Variablen gleichzeitig mischen und abgleichen kann, indem ich meine Verbindungslinie oben verwende.

Vielen Dank für Ihre Hilfe!

+0

Können Sie ein Beispiel für den Wert jeder Variablen geben? – wchiquito

+0

sql_q1 enthält 58, sql_med enthält 116 und sql_q3 enthält 172. Sie sind das untere Quartil, Median und oberes Quartil einer Spalte mit Werten von 1 bis 230. – user1156596

+0

Versuchen Sie: 'SET @ \' sql_q1 \ ': = 'SELECT 58 ', @ \ 'sql_med \': =' SELECT 116 ', @ \ 'sql_q3 \': =' SELECT 172 '; SET @ \ 'sql \': = (CONCAT (@ \ 'sql_q1 \', '\' Quartil \ 'UNION', @ \ 'sql_med \', 'UNION', @ \ 'sql_q3 \')); ' – wchiquito

Antwort

1

Verwendung CONCAT_WS():

SET @sql := CONCAT_WS(' UNION ', @sql_q1, @sql_med, @sql_q3); 

Anmerkung: Ich würde empfehlen, dass Sie UNION ALL verwenden, anstatt UNION.

Wenn eine oder mehrere der Variablen NULL sind, wird die Zeichenfolge trotzdem in Ordnung aussehen.

+0

Danke Gordon, diese Arbeit brilliant! – user1156596

Verwandte Themen