一、题目:
现有如下两张表:
希望根据这两张表得到如下结果:
根据结果,我们会发现题目要求:
两张表中,具有相同id的字段num相加,没有就留下来不变。
二、题解
2.1、错误示例
我们利用union连接两个表,得到一个临时表:
然后对这个临时表再进行查询。
考虑到最终的id名称都是不重复的,因此想到用group by。
对于num,我们看成变量,相同id的num值相加。用sum函数,
因此写出如下sql语句,得到如下答案:
发现c最终等于15,是错误的。其实我们在上一个结果集中就已经能够看到,只有一个c=15的结果。这是因为union中相同的列,相同的值默认去重了。
按照题目要求是不能去重的。
2.2、正确答案
在上面的union中加一个all,保证不会去重。
网友评论