根据关系改变 table 的续集

Sequelize altering a table that counts based on a relationship

所以我有以下 table:

VoucherID    VoucherBatch
1            v001
2            v001
3            v001
4            v002
5            v002
6            v002
7            v003

然后我想加一列表示那个批次的凭证编号,预期结果是这样的

VoucherID    VoucherBatch   VoucherEdition
1            v001           1
2            v001           2
3            v001           3
4            v002           1
5            v002           2
6            v002           3
7            v003           1

sequelize是否支持这样的东西?

您可以使用 ROW_NUMBER() select 这个“voucherEdition”列,此处查询:

SELECT voucherid, voucherbatch,   
ROW_NUMBER() OVER(PARTITION BY voucherbatch) AS voucherEdition 
FROM vouchers;

如果您只需要这个 select,您就完成了。否则,您可以创建新的 voucherEdition 列:

ALTER TABLE vouchers ADD COLUMN voucherEdition INT;

然后使用提到的查询填充这个新列,因此更新命令将如下所示:

UPDATE vouchers v JOIN
(SELECT voucherid,  
ROW_NUMBER() OVER(PARTITION BY voucherbatch) AS voucherEdition 
FROM vouchers) x ON v.voucherid = x.voucherid
SET v.voucherEdition = x.voucherEdition; 

我在这里创建了一个示例,因此您可以看到它正常工作:db<>fiddle