MySql,结合变量做变量名?

标签 mysql variables join reference concatenation

我目前正在 MySql 中编写一个函数,它要求我能够执行以下操作:

 SET argNumber = 2;
 SELECT x.x_id 
   FROM x, piv
  WHERE x.x_id = concat('piv.x', argNumber)
  LIMIT 1;

正如您在上面看到的,我正在尝试连接“piv.x”和 argNumber 的变量值来创建 piv.x2,它是表 piv 中的一列。我遇到的问题是,在我使用 concat 函数后,该过程将生成的字符串视为数据而不是引用。我该如何解决这个问题?

最佳答案

它应该是(假设 piv.x 是一个 varchar 列,否则您需要先将其转换为正确的类型)

concat(piv.x, '2')

你的查询应该是这样的

 SELECT x.x_id 
 FROM x JOIN piv
  ON x.x_id = concat( CAST(piv.x AS VARCHAR), argNumber)
  LIMIT 1;

根据您的评论,您似乎需要一个动态查询。然后像下面一样

SET @sql =CONCAT("SELECT x.x_id FROM x JOIN piv ON x.x_id = piv.x", argNumber, " LIMIT 1");
 PREPARE stmt FROM @sql;
 EXECUTE stmt;
 DEALLOCATE PREPARE stmt;

关于MySql,结合变量做变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34934850/

相关文章:

php - 数组语法错误 PHP

javascript - 简单的 jQuery 函数在 for 循环后仅返回零

c# - 在 C# 中初始化变量时出现错误

mysql - 用mysql连接5个表

java - Hibernate Criteria Join问题

mysql - 简化自连接 SQL

mysql - Perl - 将日期从 YEAR-MM-DD 转换为 MONTH、DD、YEAR

mysql - 移动mysql的数据目录失败

mysql - 合并 MySQL 中的整个记录

php - 如何将 JavaScript 变量传递给 PHP?