MYSQL - 在表中生成子集序列

标签 mysql sequence subset

我有下表

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

我想更新它以包含这张表。

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

我在 SO 上找到了完美的线程,但它是针对 mssql 的。我使用 mysql 4.1.10。

另一个线程可以在这里找到:Generating sequences for subsets of a table .

有谁知道我如何在 mysql 中做到这一点?

谢谢, 让-弗朗索瓦

最佳答案

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

关于MYSQL - 在表中生成子集序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935823/

相关文章:

postgresql - 如何重置 postgres 中的序列并用新数据填充 id 列?

java - TreeSet:有效地元素数量小于某个值

python - 使用索引对 pandas 数据帧中的列进行子集化

mysql - 根据Mysql中的两列获取最小值

java - UML 2.0 序列图深度

mysql - 返回多份稍作修改

clojure - 在迭代序列时特殊处理最后一个元素

r - 获取 R 中数据框中另一列中的值分隔的列的箱线图统计信息

mysql - 使用 AND/OR 的 SQL 语句问题

php - 具有默认选择的调查轮询应用程序的数据库架构