根据表中的另一列添加序列号

时间:2019-07-16 21:59:45

标签: mysql

我有下表

表1

id      stubs   
373      1  
390      4  
392      3  
392      3  
392      3  

如何从table1创建table2,如何根据存根和id创建序列号

表2

id      stubs   sequenceno
373        1    1
390        4    1
390        4    2
390        4    3
390        4    4
392        3    1
392        3    2
392        3    3

2 个答案:

答案 0 :(得分:0)

我相信您的答案可以在这里找到。 您可以使用现有的MySQL函数为您完成此任务。

https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_row-number

答案 1 :(得分:0)

如果我使用一个辅助表(在这种情况下是我的数据库中的日期),该表包含许多无序排列的ID,则可以选择不同的ID和存根并加入日期以获取序列号

drop table if exists t;
create table t
(id  int,    stubs  int);
insert into t values 
(373   ,   1),  
(390   ,   4),  
(392   ,   3),  
(392   ,   3),  
(392   ,   3);

select s.*,d.id from
(
select distinct id,stubs from t
) s
join dates d on d.id <= s.stubs;

+------+-------+----+
| id   | stubs | id |
+------+-------+----+
|  373 |     1 |  1 |
|  390 |     4 |  1 |
|  390 |     4 |  2 |
|  390 |     4 |  3 |
|  390 |     4 |  4 |
|  392 |     3 |  1 |
|  392 |     3 |  2 |
|  392 |     3 |  3 |
+------+-------+----+
8 rows in set (0.00 sec)