【问题标题】:SQL Update with Variable as Parameter以变​​量为参数的 SQL 更新
【发布时间】:2013-08-05 21:23:09
【问题描述】:

我正在使用 MySQL 中的存储过程来更新 SQL 表中的一行。我所拥有的是一个表格,其中几个列以增量方式命名。例如:Page_1、Page_2、Page_3....等。 存储在这些位置的数据会在不同的时间更新,我还有另一列来存储该行的更新次数。每次程序运行时,count 变量都会增加,这使我可以利用它的值来跟踪数据的下一次更新应该发生的位置。

根据我的研究,我一直在寻找利用“动态 SQL”的解决方案。我不明白如何利用它来解决我的问题。

我想将一个变量作为列名传递给更新语句。

我目前的代码如下。

 SET COUNT = COUNT + 1; -- modify count from count column
 SET COLUMNLOCATIONVARIABLE = CONCAT('Page_' , COUNT); -- concatenate the count with the column "Prefix"

 UPDATE Table
 SET COLUMNLOCATIONVARIABLE = INPUTVARIABLE --Use the concatenated statement as the column name and update it with input data
 WHERE mainID = INPUTID;

如果有人可以向我解释如何使用动态 SQL 或其他使用非动态 SQL 的解决方案将此变量作为列名传递,我将不胜感激。

提前致谢。

【问题讨论】:

    标签: mysql sql stored-procedures dynamic-sql


    【解决方案1】:

    这不是使用数据库的方式。为您的 Page_* 列创建一个新表,通过标识链接到主表,并带有页码列。然后,您可以根据主要身份和页码来更新和包含任意数量的页面。

    【讨论】:

    • 非常感谢迈克的想法。我知道这不是使用数据库的正确方法,但我仍然不明白拆分这些列如何更容易知道将新数据更新到哪里。
    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2022-01-08
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多