首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL存储过程中的串联是如何工作的?

MySQL存储过程中的串联是如何工作的?
EN

Stack Overflow用户
提问于 2014-05-16 12:54:15
回答 2查看 72关注 0票数 1

您好,这是我试图在MySQL中执行的示例查询。当我使用concat函数时,它会给出一个错误

代码语言:javascript
复制
  SELECT @grp :=San_Orange_CS_GRP as santoor_grp ,
  @_11:=power(@grp,0.1)+0.1*@_11 AS concat "@grp" , "_11" ,
  @_12:=power(@grp,0.2)+0.1*@_12 AS concat "@grp" , "_12" 
  FROM DUMMY JOIN (SELECT @_11:=0,@_12:=0) t;

当我修改代码并在查询中每次都在AS语句之后给出列名时,它工作得很好。但问题是我有大约100列,所以我不能每次运行不同的market grp时都继续写名称

代码语言:javascript
复制
   SELECT @grp :=Orange_CS_GRP as Orange_CS_grp ,
   @_11:=power(@grp,0.1)+0.1*@_11 Orange_CS_GRP_11 ,
   @_12:=power(@grp,0.2)+0.1*@_12 AS Orange_CS_GRP_12 
   from DUMMY JOIN (SELECT @_11:=0,@_12:=0) t;

提前感谢:-)

EN

回答 2

Stack Overflow用户

发布于 2014-05-16 13:43:55

这是与concat完全相同的查询:

SELECT @grp :=San_Orange_CS_GRP AS santoor_grp,@_11:=power (@grp ,0.1)+0.1*@_11 AS concat(@grp,"_11"),@_12:=power(@grp,0.2)+0.1*@_12 as concat (@grp,"_12") FROM DUMMY JOIN (SELECT @_11:=0,@_12:=0) t;

在您的查询中使用连接不正确..

谢谢

票数 0
EN

Stack Overflow用户

发布于 2014-05-16 20:59:46

别名是标识符,不能从列的值动态分配名称。

为此,您可以使用存储过程。

示例

代码语言:javascript
复制
drop procedure if exists sp_so_q23692874;

delimiter //

create procedure sp_so_q23692874()
begin
  -- read my comment below this SP.
  SELECT San_Orange_CS_GRP INTO @grp FROM DUMMY LIMIT 1;
  set @grp_name := 'Orange_CS_GRP';

  set @sql := concat( 'SELECT San_Orange_CS_GRP as santoor_grp ' );
  set @sql := concat( @sql, ', @_11 := power( ', @grp, ', 0.1 ) + 0.1 * @_11 ' );
  set @sql := concat( @sql, 'AS `', @grp_name, '_11` ' );
  set @sql := concat( @sql, ', @_12 := power( ', @grp, ', 0.2 ) + 0.1 * @_12 ' );
  set @sql := concat( @sql, 'AS `', @grp_name, '_12` ' ); 
  set @sql := concat( @sql, ' FROM DUMMY JOIN ( SELECT @_11 := 0, @_12 := 0 ) t' );

  prepare stmt from @sql;
  execute stmt;
  drop prepare stmt;
end;
//

delimiter ;

call sp_so_q23692874();
-- select @sql;

我不确定您将如何使用它,因为如果结果集只有一行,那么在表达式名称上使用动态别名可能更好。您不能为每一行上的表达式指定一个新名称,这也没有任何意义。这就是为什么我在grp结果集上放一个LIMIT子句的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23692874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档