【问题标题】:Using variable name as a table name in MySqlMySql中使用变量名作为表名
【发布时间】:2014-05-19 19:25:57
【问题描述】:

我有以下表格排列(tableX 和 tableY)的模式相似。当我的意思是{object.table} 我希望那里有真正的桌子而不是字符串。现在我要做的是为 Object 表中的每个条目执行以下 SQL。但我想知道是否有任何 SQL 解决方案可以做到这一点,即单个查询。

SELECT
    persons.person_id AS "person_id",
    {object.table}.avl AS "available",
    "{object.variable_name}" AS "variable_name",
FROM
    persons
INNER JOIN {object.table} ON {object.table}.person_id = persons.person_id
WHERE
    {object.table}.{object.column} = {object.code};

Object
- table (tableX, tableY)
- column
- code
- variable_name

tableX
- person_id
- more_info

persons
- person_id

【问题讨论】:

  • 也许你可以简单地用UNION来做这个,也许你想要EXECUTE IMMEDIATE的MySQL变体:dev.mysql.com/doc/refman/5.1/en/…,但我真的不知道,因为我不明白您正在尝试做的所有事情。
  • 我的表“对象”包含两个字符串,表和列。这包含数据库中表的名称和该表中的列名。我需要将它们一起使用并获得结果。但是由于它是一种动态数据,我不知道如何在 MySql 中使用它
  • 您应该能够使用他们在 MySQL 中所谓的准备好的语句来做到这一点。看看这个答案:stackoverflow.com/a/10480456/2947592

标签: mysql sql


【解决方案1】:

您正在尝试在查询中使用表名和列名作为参数;那是不可能的。 SQL 查询中的表名和列名不能是动态的。

但它可以使用PREPARED 查询以编程方式实现,这里只是给出了一个很好的例子和代码示例 Can I use a dynamic table name in stored procedure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2013-11-29
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多