2010-05-10 121 views
1

我對MySQL的知識不是很深入。如果我有兩個表例如是這樣的:MySQL加入兩個表並添加列值

Table1 
Date  v1 v2 v3 
05/01/2010 26 abc 45 
05/02/2010 31 def 25 
05/03/2010 50 ghi 46 

Table2 
Date  v1 v2 v3 
05/01/2010 42 jkl 15 
05/02/2010 28 mno 14 
05/03/2010 12 pqr 64 

我如何加入他們通過他們的日期查詢,然後table1.v1和table2.v1的總和,也有表1的總和。 v3和table2.v3? V2應該被忽略。

回答

6

您可能要做到以下幾點:

SELECT t1.date, t1.v1 + t2.v1 AS v1_sum, 
      t1.v3 + t2.v3 AS v3_sum 
FROM  table1 t1 
JOIN  table2 t2 ON (t1.date = t2.date); 

如果你想既列的總總,你也可以做如下:

SELECT SUM(t1.v1 + t2.v1) AS v1_sum, 
      SUM(t1.v3 + t2.v3) AS v3_sum 
FROM  table1 t1 
JOIN  table2 t2 ON (t1.date = t2.date); 

測試用例:

CREATE TABLE table1 (`date` date, `v1` int, `v3` int); 
CREATE TABLE table2 (`date` date, `v1` int, `v3` int); 

INSERT INTO table1 VALUES ('2010-05-01', 26, 45); 
INSERT INTO table1 VALUES ('2010-05-02', 31, 25); 
INSERT INTO table1 VALUES ('2010-05-03', 50, 46); 

INSERT INTO table2 VALUES ('2010-05-01', 42, 15); 
INSERT INTO table2 VALUES ('2010-05-02', 28, 14); 
INSERT INTO table2 VALUES ('2010-05-03', 12, 64); 

第一個查詢結果:

+------------+--------+--------+ 
| date  | v1_sum | v3_sum | 
+------------+--------+--------+ 
| 2010-05-01 |  68 |  60 | 
| 2010-05-02 |  59 |  39 | 
| 2010-05-03 |  62 | 110 | 
+------------+--------+--------+ 

第二查詢結果:

+--------+--------+ 
| v1_sum | v3_sum | 
+--------+--------+ 
| 189 | 209 | 
+--------+--------+ 
0

創建表科西嘉 ( ID INT(11), CNAME VARCHAR(10),
CDET VARCHAR(10) );

然後創建另一個表

創建表螺柱 ( ID INT(11),
SNAME VARCHAR(10),
SSUB VARCHAR(10)
);

然後添加上表螺柱主鍵

ALTER TABLE螺柱添加主鍵(id);

然後施用到科西嘉外鍵

ALTER TABLE科西嘉添加外鍵(id)引用根根(ID);

這就是它最後和最終步驟

選擇s.id,s.sname,c.cname,從壁釘S c.cdet加入科西嘉C 0 Ñs.id = c.id;