我想更新一个从 1 开始连续编号的表。更新有一个 where 子句,因此只有满足该子句的结果才会被重新编号。我可以在不使用临时表的情况下有效地完成此任务吗?
这可能取决于您的数据库,但这是 MySQL 5 的一个解决方案,涉及使用变量:
SET @a:=0;
UPDATE table SET field=@a:=@a+1 WHERE whatever='whatever' ORDER BY field2,field3
您可能应该编辑您的问题并指出您正在使用哪个数据库。
编辑:我发现了一个solution http://www.sqlmag.com/Article/ArticleID/93349/sql_server_93349.html将 T-SQL 用于 SQL Server。它与 MySQL 的方法非常相似:
DECLARE @myVar int
SET @myVar = 0
UPDATE
myTable
SET
@myvar = myField = @myVar + 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)