如何在更新语句中使用 SQL 变量递增
How to increment using a SQL variable within an update statement
我正在尝试使用 SQL 中的 @count
变量来增加一列。我已经尝试了多次尝试,我将在下面列出所有结果:
Error Code: 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 ...
首先是:
SET @count = 65;
UPDATE table t
SET t.Revision = CHAR(@count)
, @count = @count + 1
WHERE t.hidden = 0;
我正在尝试递增当前的每一行,以作为其有效的概念证明。
第二个是:
DECLARE t CURSOR FOR
SELECT * FROM table
WHERE t.hidden = 0;
OPEN t;
FETCH NEXT FROM t;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE table t2 SET t2.Revision = 'D' WHERE t2.id1 = t.id1 AND t2.id2 = t.id2;
END;
END
CLOSE t;
DEALLOCATE t;
再一次,我只是想看看我是否可以在实现递增之前使用 while 循环设置一个标准变量,作为它有效的概念证明。
我不确定为什么这些尝试都失败了,但我们将不胜感激。
您可以尝试以下解决方案:
SET @count = 64; -- so the first increment is 65 (starting on A).
UPDATE table_name t
SET t.Revision = CHAR(@count:=@count+1)
WHERE t.hidden = 0;
或(更短):
UPDATE table_name t, (SELECT @count:=64) t2
SET t.Revision = CHAR(@count:=@count+1)
WHERE t.Hidden = 0;
这是您的第一个示例的工作方式(在某个循环内):
首先设置计数值,然后更新
SET @count = 65;
UPDATE CUSTOMER t
SET t.LName = CONVERT(@count, char)
where t.FName = 'a';
...然后增加计数并再次更新...
set @count = @count + 1;
UPDATE CUSTOMER t
SET t.LName = CONVERT(@count, char)
where t.FName = 'a';
但这应该在一个程序中。
这里是DEMO。我只是一个小例子,希望对您有所帮助。
干杯!
我正在尝试使用 SQL 中的 @count
变量来增加一列。我已经尝试了多次尝试,我将在下面列出所有结果:
Error Code: 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 ...
首先是:
SET @count = 65;
UPDATE table t
SET t.Revision = CHAR(@count)
, @count = @count + 1
WHERE t.hidden = 0;
我正在尝试递增当前的每一行,以作为其有效的概念证明。
第二个是:
DECLARE t CURSOR FOR
SELECT * FROM table
WHERE t.hidden = 0;
OPEN t;
FETCH NEXT FROM t;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE table t2 SET t2.Revision = 'D' WHERE t2.id1 = t.id1 AND t2.id2 = t.id2;
END;
END
CLOSE t;
DEALLOCATE t;
再一次,我只是想看看我是否可以在实现递增之前使用 while 循环设置一个标准变量,作为它有效的概念证明。
我不确定为什么这些尝试都失败了,但我们将不胜感激。
您可以尝试以下解决方案:
SET @count = 64; -- so the first increment is 65 (starting on A).
UPDATE table_name t
SET t.Revision = CHAR(@count:=@count+1)
WHERE t.hidden = 0;
或(更短):
UPDATE table_name t, (SELECT @count:=64) t2
SET t.Revision = CHAR(@count:=@count+1)
WHERE t.Hidden = 0;
这是您的第一个示例的工作方式(在某个循环内):
首先设置计数值,然后更新
SET @count = 65;
UPDATE CUSTOMER t
SET t.LName = CONVERT(@count, char)
where t.FName = 'a';
...然后增加计数并再次更新...
set @count = @count + 1;
UPDATE CUSTOMER t
SET t.LName = CONVERT(@count, char)
where t.FName = 'a';
但这应该在一个程序中。
这里是DEMO。我只是一个小例子,希望对您有所帮助。 干杯!