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填充,並展示出來

由上得出,使用左連接,左表有幾條數據就會顯示幾條數據,與右表數據無關。右連接同理