SQL行替换技术咨询:将单行替换为仅HomeId不同的多行
解决方案
1. 删除目标行
先移除Table_1中需要替换的Test2行:
DELETE FROM Table_1 WHERE Name = 'Test2';
2. 插入新数据
提供两种实现方式,可根据实际场景选择:
方式一:手动指定HomeId插入
适合明确知道要插入的HomeId值时使用:
INSERT INTO Table_1 (Name, HomeId) VALUES ('Test2', 3), ('Test2', 4), ('Test2', 5);
注:若Id为自增主键,数据库会自动生成新Id;需手动指定Id的话,可在INSERT字段列表中加入Id并对应赋值。
方式二:关联Table_2批量插入
利用Table_2中已存在的HomeId数据,后续Table_2有变动时无需修改插入语句,更灵活:
INSERT INTO Table_1 (Name, HomeId) SELECT 'Test2', HomeId FROM Table_2 WHERE HomeId IN (3, 4, 5);
执行后结果示例
Table_1最终数据如下(Id值取决于数据库自增规则):
| Id | Name | HomeId |
|---|---|---|
| 1 | Test | 1 |
| 3 | Test2 | 3 |
| 4 | Test2 | 4 |
| 5 | Test2 | 5 |
内容的提问来源于stack exchange,提问作者Egor Antonovich
相关产品推荐
相关产品推荐

