我正在MySQL中使用动态SQL来构建对记录进行重新排序的排序查询。我正在排序的字段称为“ CodeSequence”,这在我使用的所有表中都是标准的。所以我想一次创建一个排序查询,然后将表名作为参数传递。
查询将对CodeSequence字段重新排序。我想使用MySQL存储过程。
我想创建一个可以在具有“ CodeSequence”字段的任何表和数据库上使用的Sequence排序。存储过程极其快捷高效。如果我不必编写多个SORT过程,那就太棒了。
这是我到目前为止的代码:
BEGIN
SET @iSequence = 0;
SET @t1 = CONCAT('UPDATE ', sTablename, ' AS t ');
SET @t2 = CONCAT('(SELECT * FROM ', sTablename, ') AS temp');
SET @t3 = CONCAT('SET ', CodeSequence, ' = temp.',
@iSequence:=@iSequence+1);
SET @t4 = CONCAT(@t1, @t2, @t3);
select @t4;
PREPARE stmt FROM @t4;
EXECUTE stmt USING CodeSequence;
DEALLOCATE PREPARE stmt;
END
I wanted to get something like the following:
ID CodeSequence Name
12 1 TEST
14 2 Record #2
15 3 Record #3
16 4 TEST 4
我的问题是我得到以下错误,“ MYSQL说#1054-字段列表中的未知列,“ CodeSequence”。这就是为什么我在UPDATE查询中使用SELECT语句。有什么建议吗??谢谢您?寻求帮助。