我有表player-s在许多一对多的关系与skill-s
目标是通过单个查询列出球员及其"前3名技能".
create table player(
id int primary key
);
create table skill(
id int primary key,
title varchar(100)
);
create table player_skills (
id int primary key,
player_id int,
skill_id int,
value int
);
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT
p.id,
group_concat(s.title SEPARATOR ', ') as skills
FROM player p
LEFT JOIN player_skills ps ON ps.player_id = p.id
LEFT JOIN skill s ON s.id = ps.skill_id
WHERE ps.value > 2
-- skills limit 3 some how ...
group …Run Code Online (Sandbox Code Playgroud) 我不知何故需要这个功能,但MySQL目前不支持它.
我正在使用GROUP_CONCAT(CONCAT(...))生成类似xml的东西.
但是当大小超过限制时,xml就会被破坏!
所以我必须以某种方式使它只检索5行!