需求
有两个表:游戏表、视频表,一个游戏对应多个视频,取出排在最前面的 5 个游戏的视频(每个游戏只选取他所有视频的第一个),视频排序按照视频表的顺序(Video.level)
最终解决方法:
SELECT * FROM `tbl_video` AS `Video` LEFT OUTER JOIN `tbl_game` AS `Game`
ON `Video`.`gameId` = `Game`.`id`
WHERE `Video`.`level` in (SELECT MAX(`level`) FROM `tbl_video` GROUP BY `gameId`) AND `Video`.`isShow` = 1
ORDER BY `Video`.`level` DESC LIMIT 0, 5
网上盛传的子查询解决方案貌似是错误的
数据库 test:
id
name
gameId
level
1
a
1
1
2
b
2
2
3
c
1
3
4
d
1
4
5
e
2
5
运行子查询语句
select * from (select