根据关系改变 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
所以我有以下 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