【发布时间】:2015-02-23 23:09:21
【问题描述】:
例如,我有 3 张桌子; 表 1:
+-------+
| count |
+-------+
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
+-------+
表2:
+-------+
| count |
+-------+
| 3 |
| 0 |
| 0 |
| 0 |
| 0 |
+-------+
表3:
+-------+
| count |
+-------+
| 1 |
| 1 |
| 0 |
| 0 |
| 1 |
+-------+
我要计算table1.count+table2.count+table3.count,得到结果,table_right:
+-------+
| count |
+-------+
| 5 | (1+3+1=5)
| 1 | (0+0+1=1)
| 0 | (0+0+0=0)
| 0 | (0+0+0=0)
| 4 | (3+0+1=4)
+-------+
但是,如果我使用命令:
select table1.count+table2.count+table3.count as total
from table1,table2,table3;
结果将变为:
+-------+
| total |
+-------+
| 5 |
| 4 |
| 4 |
| 4 |
| 7 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 5 |
| 4 |
| 4 |
| 4 |
| 7 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 4 |
| 3 |
| 3 |
| 3 |
| 6 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 4 |
| 3 |
| 3 |
| 3 |
| 6 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 1 |
| 0 |
| 0 |
| 0 |
| 3 |
| 5 |
| 4 |
| 4 |
| 4 |
| 7 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
+-------+
这不是我想要的结果,如果我尝试
select distinct table1.count+table2.count+table3.count as total
from table1,table2,table3;
我会得到:
+-------+
| total |
+-------+
| 5 |
| 4 |
| 7 |
| 2 |
| 1 |
| 3 |
| 6 |
| 0 |
+-------+
仍然不是我想要的结果。我该怎么做才能获得 table_right?
【问题讨论】:
-
此列是否共享一个共同的 id 或您可以分组的东西?
-
表格代表无序集。行之间没有对应关系,除非你有列来表达这种关系。
-
你的意思是给每个表添加一些rowID?如何为每个表添加自动增加 num 的 rowID?
-
@josegomezr 我可以选择添加一个通用 ID,例如行 ID 或其他内容。但是如何添加呢?
-
如果你添加一个通用 id(让我们调用 id rowId 并假设它在每个表上都具有相同的名称),那么它就更容易了,只需
SELECT t1.count + t2.count + t3.count as total FROM table1 as t1 left join table2 as t2 using (rowId) left join table3 as t3 using (rowId)