【问题标题】:MySQL : using user-defined variables for a table nameMySQL:使用用户定义的变量作为表名
【发布时间】:2018-04-10 10:09:02
【问题描述】:

我想在查询的 FROM 部分中使用用户定义的变量,如下例所示:

SET @year = 2013,
    @ID3_1 = 107001001,
    @TableSource = "S_EXPO_RISQUES_METEO";

SELECT @ID3_1,
       @year,
       TS.ID_TER,
       TS.VALUE 
FROM @TableSource TS;

如何使用其他语句产生等效结果?

【问题讨论】:

标签: mysql variables toad user-defined


【解决方案1】:

试试这个在不使用变量的情况下得到一个等价物。

SELECT 107001001 ID3_1,
       2013 year,
       TS.ID_TER,
       TS.VALUE 
FROM S_EXPO_RISQUES_METEO TS;

或者这个带有变量:

SET @year = 2013,
    @ID3_1 = 107001001;

SELECT @ID3_1,
       @year,
       TS.ID_TER,
       TS.VALUE 
FROM S_EXPO_RISQUES_METEO TS;

【讨论】:

  • 谢谢。这个想法是获得一个 generic 代码。我需要将它与数十个其他表一起使用,并且数据库的其他用户也需要这样做。这就是为什么它不够高效的原因......
  • 那么您只需在应用层构建代码,然后再针对您的数据库运行代码。
【解决方案2】:

你不能那样做™。查询中的列或表的命名不允许使用变量。解决方法?使用您的编程语言(php?Java?)来创建您的查询字符串。

或者,使用 MySQL 服务器端预处理语句,不要与 php 或 Java 预处理语句混淆。读这个。 https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2011-03-13
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多