我有表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) +------------------------------+
| id name updated_at|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)
+------------------------------------+
| id album_id member_id |
+------------------------------------+
Run Code Online (Sandbox Code Playgroud)
+--------------------------------+
| id album_id link |
+--------------------------------+
Run Code Online (Sandbox Code Playgroud)
$limit = 30;
$member_id = 1;
SELECT a . *,
(SELECT GROUP_CONCAT(CONCAT('$assets/album_image/medium/', ds_album_media.link) SEPARATOR ',') as link
FROM ds_album_media WHERE ds_album_media.album_id = a.id ORDER BY a.updated_at desc LIMIT 0 , 5)
AS photo_link FROM `ds_album` a
LEFT JOIN ds_album_media amd ON amd.album_id = a.id
LEFT JOIN ds_album_member amb ON amb.album_id = a.id
where amb.member_id = " …Run Code Online (Sandbox Code Playgroud) 我需要从第二个表中选择一些行,并用逗号分隔的字符串连接它们.除了一个问题之外,查询工作正常 - 它总是选择所有行并忽略LIMIT.
这是我的查询的一部分,它获取该字符串并忽略LIMIT:
select
group_concat(value order by `order` asc SEPARATOR ', ')
from slud_data
left join slud_types on slud_types.type_id=slud_data.type_id
where slud_data.product_id=18 and value!='' and display=0 limit 3;
// Result:
+---------------------------------------------------------+
| group_concat(value order by `order` asc SEPARATOR ', ') |
+---------------------------------------------------------+
| GA-XXXX, Bentley, CONTINENTAL FLYING SPUR, 2006 |
+---------------------------------------------------------+
// Expected result: (only 3 comma-separated records, not 4)
Run Code Online (Sandbox Code Playgroud)
完整查询:
SELECT *,product_id id,
(select group_concat(value order by `order` asc SEPARATOR ', ') from slud_data left join slud_types on slud_types.type_id=slud_data.type_id …Run Code Online (Sandbox Code Playgroud)