写在前面
昨天本人用MySql进行简单的数据分析的时候,遇到了一个问题——用一张表内查找到的数据更新另一张表的部分数据。由于本人以前基本上没有用MySql处理过数据,因而在此过程中遇到了诸多问题。先将正确的方法记录下来,已提醒自己,同时也希望对大家有用。
Sql语句
为了便于说明,先给出如下两个表格,table A and table B:
table A
uid | time | forward_count | comment_count |
---|---|---|---|
101 | 2014-07-01 | 2 | 1 |
102 | 2014-07-05 | 4 | 2 |
103 | 2014-08-10 | 3 | 3 |
104 | 2014-12-11 | 8 | 5 |
105 | 2014-07-21 | 4 | 3 |
table B
uid | forward_count |
---|---|
101 | 0 |
102 | 0 |
103 | 0 |
104 | 0 |
105 | 0 |
106 | 0 |
107 | 0 |
现在,我们要将table A 中所有用户七月份(2014-07-__)的数据更新到table B中,于是,我们使用如下语句:
CREATE TABLE C AS
SELECT uid,forward_count
FROM A
WHERE `time` LIKE '2014-07-__'
得到table C:
uid | forward_count t |
---|---|
101 | 2 |
102 | 4 |
105 | 4 |
然后用table C数据更新table B:
UPDATE B,C
SET B.forward_count=C.forward_count
WHERE C.uid=B.uid
得到了更新后的table B:
uid | forward_count |
---|---|
101 | 2 |
102 | 4 |
103 | 0 |
104 | 0 |
105 | 4 |
106 | 0 |
107 | 0 |
本人犯的错
本人在更新数据时,采用的是 INSERT INTO 语句,由此导致将table C的数据直接插入到了table B数据之后。导致本人在这个小问题上花费了大量时间和精力,惭愧,惭愧。