mysql - 使用加载数据添加值

标签 mysql

我有一个带有复合主键的表。我正在尝试从文本文件加载数据。 我需要将新值添加到表的原始值中。

drop table if exists load_data;

CREATE TABLE `load_data` (
  `zoneid` bigint(20) NOT NULL DEFAULT '0',
  `creativeid` bigint(20) NOT NULL DEFAULT '0',
  `count` int(11) DEFAULT NULL,
  PRIMARY KEY (`zoneid`,`creativeid`)
) ENGINE=MyISAM;

insert into load_data values (1200, 2200, 4), (9200, 9200, 91);

mysql> select * from load_data;
+--------+------------+-------+
| zoneid | creativeid | count |
+--------+------------+-------+
|   1200 |       2200 |     4 |
|   9200 |       9200 |    91 |
+--------+------------+-------+
2 rows in set (0.00 sec)

# cat abc1.txt
1200    2200    8
9200    9200    7

以下加载数据将 5 个计数添加到新值,而不是主键列唯一组合的原始计数。

load data infile 'abc1.txt' replace into table load_data (zoneid, creativeid, @a) set count = @a+5 ;

mysql> select * from load_data;
+--------+------------+-------+
| zoneid | creativeid | count |
+--------+------------+-------+
|   1200 |       2200 |    13 |
|   9200 |       9200 |    12 |
+--------+------------+-------+
2 rows in set (0.00 sec)

当我尝试将该值添加到相应区域和广告素材 ID 列的原始计数值时,我得到 NULL 而不是新的总数。

mysql> load data infile 'abc1.txt' replace into table load_data (zoneid, creativeid, @a) set count = @a+@count ;
Query OK, 4 rows affected (0.00 sec)
Records: 2  Deleted: 2  Skipped: 0  Warnings: 0

mysql> select * from load_data;
+--------+------------+-------+
| zoneid | creativeid | count |
+--------+------------+-------+
|   1200 |       2200 |  NULL |
|   9200 |       9200 |  NULL |
+--------+------------+-------+
2 rows in set (0.00 sec)

预期结果:

mysql> select * from load_data;
+--------+------------+-------+
| zoneid | creativeid | count |
+--------+------------+-------+
|   1200 |       2200 |    12 |
|   9200 |       9200 |    98 |
+--------+------------+-------+

最佳答案

这是因为 REPLACE 强制首先删除记录。

要处理它,您可以临时添加新字段并从文件加载 count 数据。然后编写UPDATE表来计算count字段,然后删除temp。字段。

关于mysql - 使用加载数据添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886527/

相关文章:

MySQL - ORDER BY 与 UNION 的一部分

php - 类别偏移

mysql - 我可以连接到我的数据库,但根本无法选择它,我非常需要帮助

mysql - SQL - 查找每个 Actor 的名字、姓氏和科幻电影的总长度

python - 使用 python 在 mysqltable 中进行字符串搜索

mysql - MySQL 中的存储过程与触发器

java - MySQL + Android 检查是否存在更多值

php - 如何将表中的多行更新到MySQL

php - 何时使用存储过程和触发器与应用层

php - 在 MySQL DB 上按目标文件夹存储多个上传内容