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);
由上得出,使用左连接,左表有几条数据就会显示几条数据,与右表数据无关。右连接同理