mysql - MySQL - 创建新行并使用新 ID 插入现有数据?
问题描述
我有一个类似于以下的 MySQL 表,是否可以:
1)复制与“type = 42”相邻的现有“值” 2)在每条记录的末尾插入一个新行(追加) 3)将“type = 42”中找到的值添加到新行但更改从 42 到“206”的类型?如下图所示,BEFORE 和 AFTER。
这可能吗?
前:
+-------+------+-------+---------+---------+
| id | name | abbr | type | value |
+-------+------+-------+---------+---------+
| 123 | HCT | HCT | 42 | XYZ |
| | | | 57 | ABC |
| | | | 131 | RST |
| | | | 208 | 110 |
| 358 | CBC | CBC | 42 | 9AB |
| | | | 32 | GHI |
| | | | 11 | SB1 |
| | | | 22 | LLY |
| | | | 57 | JKL |
| | | | 131 | 32B |
| | | | 263 | POF |
| 102 | BMP | BMP | 42 | 444 |
| | | | 131 | 09N |
| | | | 263 | 77M |
| | | | 35 | XJJ |
| | | | 11 | X10 |
| | | | 22 | PLP |
+-------+------+-------+---------+---------+
后:
+-------+------+-------+---------+---------+
| id | name | abbr | id_type | id_base |
+-------+------+-------+---------+---------+
| 123 | HCT | HCT | 42 | XYZ |
| | | | 57 | ABC |
| | | | 131 | RST |
| | | | 208 | 110 |
| | | | 206 | XYZ |
| 358 | CBC | CBC | 42 | 9AB |
| | | | 32 | GHI |
| | | | 11 | SB1 |
| | | | 22 | LLY |
| | | | 57 | JKL |
| | | | 131 | 32B |
| | | | 263 | POF |
| | | | 206 | 9AB |
| 102 | BMP | BMP | 42 | 444 |
| | | | 131 | 09N |
| | | | 263 | 77M |
| | | | 35 | XJJ |
| | | | 11 | X10 |
| | | | 22 | PLP |
| | | | 206 | 444 |
+-------+------+-------+---------+---------+
感谢您的任何帮助!
我是 MySQL 新手。
解决方案
您应该能够使用INSERT ... SELECT
查询来执行此操作:
INSERT INTO table1
SELECT id, name, abbr, 206, value
FROM table1
WHERE type = 42
请注意,我假设您要从带有 的行中复制id
,name
和abbr
值type=42
。如果您希望它们为空白(如在您的示例数据中),请将查询更改为
INSERT INTO table1
SELECT '', '', '', 206, value
FROM table1
WHERE type = 42
推荐阅读
- angular - Mat Checkbox 当'Y'时不改变
- mysql - 如何将 SQL 查询转换为 Eloquent Laravel
- sonarqube - jenkins 管道中的 Sonarqube 阶段因 403 错误而失败
- data-structures - 如何组合数据点的两个属性(每个属性具有相反的影响)以过滤出最佳数据点?
- python - 合并和覆盖两个 DataFrame 中的公共列
- amazon-web-services - 执行 aws-lambda 时出现参数列表太长错误
- c++ - C++:变量“DiscreteGBM::S0”未初始化。始终初始化成员变量(type.6)
- mysql - 从另一表的列中减去一列的总和
- android - 使用 POST 从 API 获取 JSON 对象
- c - 反向词,指针方法