我正在使用MySQL中的存储过程来更新SQL表中的行。我所拥有的是一个表,其中几个列以递增方式命名。 EX:Page_1,Page_2,Page_3 ....等。 存储在这些位置的数据会在不同时间更新,我还有另一列来存储行更新的次数。每次过程运行时,count变量都会递增,这使我可以利用它的值来跟踪下一次数据更新的发生位置。
从我的研究中,我一直在寻找利用“动态SQL”的解决方案。我不明白如何利用它来解决我的问题。
我想将变量传递给update语句作为列名。
我目前的代码如下。
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的解决方案将此变量作为列名传递,我将不胜感激。
提前致谢。
答案 0 :(得分:0)
这不是使用数据库的方法。为Page_*
列创建一个新表,通过标识链接到主表,并带有页码列。然后,您可以根据需要更新并包含尽可能多的页面,主要标识和页码。