2016-11-11 44 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

相关问题