我在面试中常问的数据库问题

面试时常用的sql问题

第一题

表A有字段aid等,表B有字段bid等

A表

字段名

aid

其他字段略

记录1

1

*

记录2

2

*

记录3

3

*

B表

字段名

bid

其他字段略

记录1

2

*

记录2

3

*

记录3

4

*

SELECT a.aid,b.bid,……

FROM A a

LEFT JOIN B b ON a.aid=b.bid

查询结果中有那些行,每行的列都是什么样子的

【主要考察:对左连接的了解,这是基本技能】

第二题

有user表记录了系统中的用户信息

user_id

user_name

province

city

1

ebola

辽宁省

沈阳市

2

camus

辽宁省

大连市

3

leon

辽宁省

大连市

4

tyler

辽宁省

沈阳市

5

oven

辽宁省

大连市

6

susie

吉林省

长春市

7

nancy

吉林省

吉林市

8

lucy

吉林省

四平市

9

tom

河北省

石家庄市

10

lily

河北省

秦皇岛市

11

wendy

河北省

保定市

12

andy

河北省

唐山市

13

hard

河北省

张家口市

14

vance

河北省

廊坊市

请写SQL查询表中的满足以下要求的省份

1、 不少于5个用户

2、 省份所属用户属于至少3个城市

例如:

辽宁省 不满足第二个条件,只属于沈阳市大连市两个城市

吉林省 不满足第一个条件,只有3个用户

河北省 满足第一个条件有6个用户满足第二个条件 有6个城市

 【深度考察sql能力,以面试的紧张情形,目前只有一个人答出来,是一个做过dba的开发】

第三题

表有两列id,name,其中id是主键,name是名称,在项目刚开始时name可以重复,当上线运行一段时间后,发现name必须唯一才符合需求,

希望删除掉name重复的,只保留name相同的行中id最小的行,

要求

1、必须使用一个SQL,即 不能多个SQL依次执行来达到目的

2、当name重复时,只能保留id最小的行,当name不重复时,直接保留。

3、不要求效率

即如果有两行(1,张三),(3,张三)则必须删掉id=3的。保留id=1的

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/klarck/p/13594291.html