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

Posted

技术标签:

【中文标题】我可以用纯 SQL 做到这一点吗?【英文标题】:can I do this with pure SQL? 【发布时间】:2012-03-30 06:48:30 【问题描述】:

假设我有一张这样的桌子:

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 过程来做到这一点,这两种解决方案都涉及循环整个表。

【问题讨论】:

哪个name列有哪个order_id有关系吗? 除了直接oracle的rownum还有其他要求吗? @safarov 名字无关紧要 @cctan 就像 rownum,但我想更新现有的记录集。 【参考方案1】:

你可以更新表格:

 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,现在我需要弄清楚 hsqldb 的语法:)【参考方案2】:

你的意思是这样的吗?这个问题不是很清楚。

DECLARE @order_id int
SET @order_id = 0
UPDATE #tmp_Users
SET @order_id = order_id  = @order_id + 1

【讨论】:

以上是关于我可以用纯 SQL 做到这一点吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以用 :hover 伪类来做到这一点吗?

Pinescript 可以做到这一点吗?

CSS 挑战,我可以在不引入更多 HTML 的情况下做到这一点吗? [复制]

CSS 挑战,我可以在不引入更多 HTML 的情况下做到这一点吗? [复制]

将属性更改为不再是瞬态的 - 我可以通过轻量级核心数据迁移来做到这一点吗?

React TS:我可以在不进行类型转换的情况下做到这一点吗? “可以用可能不相关的任意类型实例化”