MySQL加入两个表并添加列值
问题描述:
我对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应该被忽略。
答
您可能要做到以下几点:
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 |
+--------+--------+
答
创建表科西嘉 ( 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;