美文网首页
22、union面试题讲解

22、union面试题讲解

作者: 小碧小琳 | 来源:发表于2018-12-16 09:02 被阅读0次

一、题目:

现有如下两张表:

希望根据这两张表得到如下结果:

根据结果,我们会发现题目要求:
两张表中,具有相同id的字段num相加,没有就留下来不变。

二、题解

2.1、错误示例

我们利用union连接两个表,得到一个临时表:

然后对这个临时表再进行查询。
考虑到最终的id名称都是不重复的,因此想到用group by。
对于num,我们看成变量,相同id的num值相加。用sum函数,
因此写出如下sql语句,得到如下答案:

发现c最终等于15,是错误的。其实我们在上一个结果集中就已经能够看到,只有一个c=15的结果。这是因为union中相同的列,相同的值默认去重了。

按照题目要求是不能去重的。

2.2、正确答案

在上面的union中加一个all,保证不会去重。

相关文章

网友评论

      本文标题:22、union面试题讲解

      本文链接:https://www.haomeiwen.com/subject/dltzhqtx.html