mysql - 我可以用纯 SQL 做到这一点吗?

标签 mysql sql hsqldb

假设我有一个这样的表:

name          |order_id
=======================
first_record  | 0
second_record | 0
third_record  | 0
       [...]

我只想用递增的值更新 order_id(不确定如何用英语正确表达 - 请随意编辑以提供更好的描述)。请参阅下面的预期输出:

name          |order_id
=======================
first_record  | 1
second_record | 2
third_record  | 3
       [...]  | n

我知道如何通过使用某种编程语言的脚本或 sql 过程来执行此操作,这两种解决方案都涉及循环整个表。

最佳答案

你可以更新表格:

 SET @oo = 0;
 UPDATE table SET `order_id`=@oo:=@oo+1 ORDER By something;

或者在选择时只获取 order_id 作为返回的行号:

 SET @oo = 0;
 SELECT name, @oo:=@oo+1 order_id FROM table ORDER By something;

关于mysql - 我可以用纯 SQL 做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9938209/

相关文章:

java - Tomcat JDCBRealm 找不到驱动程序类

java - 尝试在没有运气的情况下独立运行和访问 HSQLDB

sql - 更新查询的问题

PHP 脚本通过 Cronjob 在一台服务器上运行,但不在类似服务器上运行

php - 使用 UserSpice 从自定义表格中选择和显示数据

php - 删除 level 1 array search by value on level 2

sql - 在两个条件下连接两个表,如果它无法连接到带有空白单元格的行

SQL合并两列的值作为主键

java - 如何使用数据库管理器调用 Hsqldb 中的过程?

mysql - 获取字符串的数字/规范化表示以帮助 DB 中标题的 'natural sort ordering'