MySql中用一張表的資料更新另一張表的部分資料
阿新 • • 發佈:2019-02-04
寫在前面
昨天本人用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資料之後。導致本人在這個小問題上花費了大量時間和精力,慚愧,慚愧。