当前位置: 首页 > 面试题库 >

sql语句中的动态表名称

缪晋
2023-03-14
问题内容

我正在尝试执行这样的mysql查询

SET @id := '47';
SET @table := @id+'_2013_2014_voucher';
SELECT * FROM @table;
Delete FROM @table where id=@id

它显示这样的错误

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@table' at line 1

我该如何实现?


问题答案:

在查询中动态表名的使用最好与 Prepared
Staments一起使用
,在mysql中也可以使用串联功能concat

SET @id := '47';
SET @table := concat(@id,'_2013_2014_voucher');
set @qry1:= concat('select * from ',@table);
prepare stmt from @qry1 ;
execute stmt ;

您也可以针对删除查询执行此操作



 类似资料:
  • 本文向大家介绍Mybatis中的动态SQL语句解析,包括了Mybatis中的动态SQL语句解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Mybatis中的动态SQL语句解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下   Mybatis中配置SQL有两种方式,一种是利用xml 方式进行配置,一种是利用注解进行配置。   Myb

  • 我下载了Visual Studio2015和SQL Data Tools 2015,因为我正在尝试制作一个简单的SSIS包,用于将一些数据行从服务器上的db中的表复制到另一个服务器上的另一个db中的表。我有一些复杂的问题使我的工作更加困难,例如需要动态地构建表名。到目前为止,我已经创建了一个执行Sql任务,用于删除目标表中的数据,以避免重复行。在输出中,我附加了一个数据流活动,包括一个Ole db

  • 问题内容: 大家好,我有一个要使用的可怕数据库,而linqtosql是我从中检索数据的选项。任何试图通过基于用户选择抛出不同的表名来重用函数的人,据我所知,没有办法修改DataContext查询中的TEntity或。 这是我当前的代码。 我想用Enumerable记录填充ViewData。 问题答案: 您可以在DataContext实例上调用ExecuteQuery方法。您将要调用采用Type实例

  • 问题内容: 我正在尝试将plpgsql编写为以下形式的函数(请注意,这是简化版本): 失败的部分是生产线。如何基于变量表名称声明类型?还是我需要以某种方式进行投射? 像这样的东西可以正常工作,但是如果我使用像这样的变量名: 问题答案: 重要的是要了解这五种 不同类型的数据/符号 的主要性质: 1。 类型为的字符串文字。在SQL中使用时(是否嵌入在plpgsql代码中),它被强制转换为从 conte

  • 问题内容: 我已经研究了几天,感觉就像我在转圈。我具有SQL的基本知识,但是有许多我不了解的领域。 我有一个表,用于存储数据库中所有其他表的名称和字段。 我想编写如下语句,但是无法正常工作: 这可能吗?我开发的应用程序要求用户自定义报告。 问题答案: 如果我正确理解了您要执行的操作,则最好将其作为程序中的两个独立查询来执行。一个查询获取要选择的字段,然后在程序中使用该字段来构建第二个查询,该查询实

  • 的计算类似于: 这里的是环境的名称(可以随时间改变),是表名(将固定)。 的值来自文件,该文件使得查询容易受到SQL注入的攻击。 有没有人可以建议我,有什么可能的方法来处理这件事? 注意:我们将来可以迁移到DB2,因此该解决方案应该与Oracle和DB2兼容(如果可能的话,应该与数据库无关)。