mysql相关面试题(一)

 

1、主键自增,姓名字段重复。删除重复的姓名数据,只留一条

-- Every derived table must have its own alias 子查询要起别名

-- 思路:分组后只会显示一条,然后根据这一条的id 去not in 删除
DELETE FROM test WHERE id NOT IN (SELECT id FROM (SELECT * FROM test GROUP BY NAME) b);

2、主键自增,主键不连续,查出某个主键的下一条数据

-- searchId为要查询的id

-- 思路:先查询出大于searchId的所有数据,取最小的,即为searchId的下一个id。
--      根据这个id 查询出该数据。

SELECT * FROM test WHERE id = (SELECT MIN(id) FROM test WHERE id > searchId);

3、有两张表,表A几条数据,表B几条数据,表A左连接表B后会查询出几条数据

左连接为保全左表数据,即使右表中没有数据,也会被null填充,并展示出来

右连接为保全右表数据,即使左表中没有数据,也会被null填充,并展示出来

由上得出,使用左连接,左表有几条数据就会显示几条数据,与右表数据无关。右连接同理

 

你可能感兴趣的:(mysql相关面试题(一))