MySQL多表查询排序"/>
MySQL多表查询排序
最近看到一个面试题,是关于mysql的多表查询并排序分组的
题目如下:
Music表包含所有歌曲信息,每首歌曲尤其对应的Id,Name,Year和Singer Id。
+----+---------+--------+-----------+
+----+---------+--------+-----------+
Singer表包含所有歌手信息
+----+----------+
+----+----------+
请编写一个SQL查询语句,找出每个歌手年份最新的一首歌曲名字
+------------+----------+--------+
+------------+----------+--------+
建表语句
-- Music表包含所有歌曲信息,每首歌曲尤其对应的Id,Name,Year和Singer Id
CREATE TABLE music(id INT PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(20),`year` INT,sign_id INT
)INSERT INTO music(id,name,year,sign_id) VALUES(null,'七里香',2003,1),
(null,'吻别',2000,2),
(null,'如果爱',2001,2),
(null,'菊花台',2005,1);-- Singer表包含所有歌手信息
CREATE TABLE signer(id INT PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(20)
)INSERT INTO signer(id,name) VALUES(null,'周杰伦'),
(null,'张学友');
查询语句
SELECTs. NAME AS Signer,m. NAME,m. YEAR
FROMsigner s
INNER JOIN (SELECT*FROMmusicORDER BY`year` DESC
) AS m ON m.sign_id = s.id
GROUP BYs.id
因为我是一个新手,如果有什么更好的解题方法,欢迎写在评论里
欢迎关注我的个人博客 /
更多推荐
MySQL多表查询排序
发布评论