如何插入带倒序计算索引字段IndexF的记录到目标表?
实现方案
源数据表格
| ParentId | Start_date | CompName |
|---|---|---|
| 1 | 20/03/2023 | Comp1 |
| 1 | 10/01/2023 | Comp2 |
| 1 | 16/08/2023 | Comp3 |
| 1 | 11/11/2023 | Comp4 |
实现方法
完全可以实现,用SQL的INSERT INTO语句结合CASE WHEN条件判断就能完成需求,具体写法如下(假设目标表名为target_table,字段包含ParentId、Start_date、CompName、IndexF):
INSERT INTO target_table (ParentId, Start_date, CompName, IndexF) SELECT ParentId, Start_date, CompName, CASE WHEN Start_date = '11/11/2023' THEN 0 WHEN Start_date = '16/08/2023' THEN 85 WHEN Start_date = '20/03/2023' THEN 84 WHEN Start_date = '10/01/2023' THEN 83 END AS IndexF FROM your_source_table;
关键注意事项
- 替换
your_source_table为实际的源表名称,target_table为目标表名称; - 若数据库对日期格式有严格要求(如默认
YYYY-MM-DD),需先转换日期格式,以MySQL为例:
INSERT INTO target_table (ParentId, Start_date, CompName, IndexF) SELECT ParentId, Start_date, CompName, CASE WHEN STR_TO_DATE(Start_date, '%d/%m/%Y') = '2023-11-11' THEN 0 WHEN STR_TO_DATE(Start_date, '%d/%m/%Y') = '2023-08-16' THEN 85 WHEN STR_TO_DATE(Start_date, '%d/%m/%Y') = '2023-03-20' THEN 84 WHEN STR_TO_DATE(Start_date, '%d/%m/%Y') = '2023-01-10' THEN 83 END AS IndexF FROM your_source_table;
- 确保目标表的
IndexF字段为数值类型(如INT),可存储对应数值。
内容的提问来源于stack exchange,提问作者nnmmss
相关产品推荐
相关产品推荐

