互联网SQL面试真题来啦!

148 阅读3分钟

图片\

【面试题】这是某互联网公司的面试题。

表a和表b如下,相同字段为ID,如何通过查询完成下列各项任务?

图片

问题1:表a、表b的交集

问题2:表a、表b的并集

问题3:存在表a、但不存在表b的元素,同时存在表b,但不存在表a的元素

【问题1解题思路】:

表a、表b的交集

此题主要考察的是表与表之间内部联结方法,用inner…join…on语句联结,此题SQL代码为:

image.png

问题1 SQL运行结果:

ID
2
3

【本题考点】

   1、内部联结的应用

内部联结,用”…inner…join … on 条件…“语句,内部联结取两个表的交集,图示如下:中间的部分为交集:

图片

   此题的交集为:

图片

2、表别名的用法

表的别名,用 as 定义别名,缩短了SQL语句,让查询语句比较简洁,并且可以多次使用。

【问题2解题思路】:

表a、表b的并集

此题考察的是表的并集union的用法,使用union把两个表并起来。

image.png

问题2 SQL运行结果

ID
1
2
3
4
5
6

【本题考点】

1、此题重点考察的是组合查询的union的用法

2、union的使用规则:

  1. 必须有2个以上的select 语句组成,中间用union联结

  2. union前后的select 语句必须是相同的列,表达式、聚集函数

3、union与union all的区别(如下图示)

 union把查询结果相同的行自动去除了,本题用的union,表a、表b中共同的元素2、3,各保留了一个。union all 返回满足所有条件的元素。

图片


【问题3解题思路】:

存在表a、但不存在表b的元素,同时存在表b,但不存在表a的元素

这个题有两种解法

(一)用left join、right join。详细用法见内部、外部联结。先选出存在表a,不存在表b的元素

image.png

sql运行结果:

ID
1
4

即:

图片

然后再选出存在表b,不存在表a的元素

image.png

sql运行结果

ID
5
6

即:

图片

最后用union合并在一起

image.png

sql运行结果

ID
1
4
5
6

(二)用not 排除法

 

  1、“存在表a,但不存在表b”,把属于表b的元素排除掉。

image.png

2、题意中要求“…… 同时 ……“,把存在表a,不存在表b的元素,”与“存在表b,不存在表a的元素”的两个并列条件,用union联结起来

image.png

SQL运行结果

ID
1
4
5
6

【本题考点】

1、not 排除后面的条件,一般与in联用,in指定范围

2、union的用法,见问题2,此题的图示为:

图片

3、子查询,从里到外处理,里面的查询结果是外层的条件。

【此面试题的总结】:

此面试题比较简单,主要考察表的内联结、表的并集,子查询、not in的用法,虽然比较简单,但是是SQL的最基础的用法,需要打实功底。

       

图片

image.png