C03
来源: 时间:2025-11-20 22:06
你希望根据 `file_id` 字段中某个部分(如 `-2509-` 或 `-2508-`)为每个相同前缀的值生成**唯一递增的流水号**,例如: - 原始值:`C03-PCB-TS-2509-51`、`C03-PCB-TS-2509-51` - 期望值:`C03-PCB-TS-2509-52`、`C03-PCB-TS-2509-53` --- ## ✅ 实现思路 1. 使用 SQL 提取 `file_id` 中的“前缀”部分(即 `-2509-` 前的部分); 2. 使用 `ROW_NUMBER()` 按该前缀进行编号; 3. 使用 `UPDATE` 更新 `file_id` 字段为新生成的唯一值。 --- ## ✅ 示例 SQL(以 PostgreSQL 为例) ### 1. 查看当前数据结构和生成新值(测试阶段) ```sql SELECT file_id, -- 提取前面的固定部分,如 C03-PCB-TS-2509- split_part(file_id, '-', 1) || '-' || split_part(file_id, '-', 2) || '-' || split_part(file_id, '-', 3) || '-' || split_part(file_id, '-', 4) || '-' AS prefix, -- 使用 ROW_NUMBER() 为每个前缀生成唯一编号 ROW_NUMBER() OVER (PARTITION BY split_part(file_id, '-', 1) || '-' || split_part(file_id, '-', 2) || '-' || split_part(file_id, '-', 3) || '-' || split_part(file_id, '-', 4) ORDER BY file_id ) AS seq FROM testdup.dynamic_general_ledger; ``` --- ### 2. 更新 `file_id` 字段(正式操作) ```sql WITH numbered AS ( SELECT id, file_id, split_part(file_id, '-', 1) || '-' || split_part(file_id, '-', 2) || '-' || split_part(file_id, '-', 3) || '-' || split_part(file_id, '-', 4) AS prefix, ROW_NUMBER() OVER (PARTITION BY split_part(file_id, '-', 1) || '-' || split_part(file_id, '-', 2) || '-' || split_part(file_id, '-', 3) || '-' || split_part(file_id, '-', 4) ORDER BY file_id ) AS seq FROM testdup.dynamic_general_ledger ) UPDATE testdup.dynamic_general_ledger AS t SET file_id = n.prefix || (n.seq + 51) -- 从 52 开始 FROM numbered AS n WHERE t.id = n.id; ``` > ✅ 解释: > - `split_part(..., '-', 4)` 提取前4段,作为分组依据; > - `ROW_NUMBER()` 为每个组生成唯一编号; > - `+ 51` 表示从 `52` 开始生成流水号; > - 使用 `id` 做关联更新,确保准确。 --- ## ✅ 示例输出 | 原始 file_id | 新 file_id | |--------------|-------------| | C03-PCB-TS-2509-51 | C03-PCB-TS-2509-52 | | C03-PCB-TS-2509-51 | C03-PCB-TS-2509-53 | | C03-PCB-TS-2508-51 | C03-PCB-TS-2508-52 | | C03-PCB-TS-2508-51 | C03-PCB-TS-2508-53 | --- ## ✅ 注意事项 - **备份数据**:更新前建议先备份表; - **字段长度**:确保 `file_id` 字段长度足够存储新值; - **索引影响**:如果 `file_id` 有索引,更新大量数据可能会影响性能; - **可扩展性**:如果你的 `file_id` 结构更复杂,可以使用正则提取(如 `regexp_match`)。 --- ## ✅ 扩展:使用正则提取前缀(更灵活) ```sql SELECT file_id, (regexp_match(file_id, '^(.*?-d+)-d+$'))[1] AS prefix, ROW_NUMBER() OVER (PARTITION BY (regexp_match(file_id, '^(.*?-d+)-d+$'))[1] ORDER BY file_id) AS seq FROM testdup.dynamic_general_ledger; ``` ---
相关知识
【西丽镇沙河西路深港花卉中心C03(西丽果场荔枝世界)】位置示意图,地图位置,交通指引,周边酒店
C03 园艺植物的长发育
一种可释放负离子的矿物晶体花釉及其制备的陶瓷砖专利查询
这些方法 让水养切花多美几天
新房空气净化器有用吗?到底能不能去甲醛吗?
Plant Physiol | 南京农业大学管荣展课题组揭示油菜闭花授粉新机制
口红品牌排行(口红品牌排行前三十)
花字体怎么打啊?
花知晓口红色号推荐
主要有机肥养分含量表
网址: C03 https://www.huajiangbk.com/newsview2477445.html
| 上一篇: 贵州学业水平·24)第二次工业革 |
下一篇: 1. 判断100~200之间哪些 |
推荐分享
- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039
分享热点排名
