gpt4 book ai didi

mysql - 是否有一个简单的 MySQL 查询可以将一堆值添加到指定的行?

转载 作者:行者123 更新时间:2023-11-29 05:33:27 27 4
gpt4 key购买 nike

我有一个包含多个列的 MySQL 表,包括 idcount。我刚得到一个 Excel 电子表格,其中包含相同的项目 id 以及必须添加到每一行的 count 的数字。

例如,这里是数据的一个子集,只显示了相关的列:

| id  | count |
|-----+-------|
| ... | ... |
| 348 | 165 |
| 347 | 364 |
| 346 | 381 |
| 345 | 6017 |
| ... | ... |

这是 Excel 电子表格中的数据:

| id  | add   |
|-----+-------|
| ... | ... |
| 348 | 3,766 |
| 347 | 386 |
| 346 | 860 |
| 345 | 0 |
| ... | ... |

我想为每个 id 组合 countadd 字段,以便 count 像这样更新因此,保持表中所有其他列不变:

| id  | count |
|-----+-------|
| ... | ... |
| 348 | 3931 |
| 347 | 750 |
| 346 | 1241 |
| 345 | 6017 |
| ... | ... |

我知道MySQL可以做到,但不知 Prop 体步骤是什么。我应该导出 Excel 数据的什么格式?文件格式?硅通孔?如何将“调整”文件读入 MySQL?这种 UPDATE 命令的语法是什么?

最佳答案

您需要通过几个步骤完成此操作:

  1. CREATE 临时表
  2. LOAD数据存入临时表
  3. UPDATE原始表,对临时表使用 JOIN

CREATE [TEMPORARY] TABLE 语法很简单。这就像创建一个表,但它会在您的 session 结束时消失。表格格式应与您要更新的列相匹配。这可以简单地使用 CREATE ... (SELECT...) 语法来完成,例如:

CREATE TEMPORARY TABLE `data_to_load` (
SELECT
`id`,
`count`
FROM
`table_to_update`
WHERE
0
);

这将创建一个名为 data_to_loadTEMPORARY TABLE,包含与 table_to_updateid 完全相同的格式> 和 countWHERE 0 永远不会匹配,所以它只是复制表的格式,而不是数据。

接下来,加载数据。格式不挑剔,你只需要指定它。对于 Excel 使用的标准 CSV 格式,命令为:

LOAD DATA
INFILE 'exported_data.csv'
INTO TABLE `data_to_load`
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
(
`id`,
`count`
);

最后,UPDATE 现有数据,通过JOIN与您的新表合并:

UPDATE
`table_to_update`
INNER JOIN `data_to_load`
ON `data_to_load`.`id` = `table_to_update`.`id`
SET
`table_to_update`.`count` = `table_to_update`.`count` + `data_to_load`.`count`
;

关于mysql - 是否有一个简单的 MySQL 查询可以将一堆值添加到指定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com