2016-11-11 27 views
0

我有三個用戶定義的變量,並且通過執行以下查詢一次只能計算出最多連接兩個。在mysql中連接用戶定義的變量

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

我也想連接我的其它用戶定義的變量,@ sql_q3,這樣@sql店@ sql_q1,@sql_med和@ sql_q3。

有沒有一種方法可以連接三個類似於上面的用戶定義變量?

所有三個變量使用同一個表中的相同數據。所以加入它們不是問題,因爲我可以通過使用上面的聯合線來一次混合和匹配兩個變量。

謝謝你的幫助!

+0

你能舉出一個每個變量值的例子嗎? – wchiquito

+0

sql_q1包含58,sql_med包含116,sql_q3包含172.它們是具有從1到230的值的列中的較低四分位數,中位數和上四分位數。 – user1156596

+0

嘗試:SET @ \ sql_q1 \':='SELECT 58 ',@ \'sql_med \':='SELECT 116',@ \'sql_q3 \':='SELECT 172'; SET @ \'sql \':=(CONCAT(@ \'sql_q1 \','\'quartile \'UNION',@ \'sql_med \','UNION',@ \'sql_q3 \'));' – wchiquito

回答

1

使用CONCAT_WS()

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

注:我會建議您使用UNION ALL而非UNION

此外,如果一個或多個變量是NULL,那麼它的字符串仍然看起來沒問題。

+0

謝謝戈登,這出色的工作! – user1156596