我正在尝试将逻辑复制为show here。但是,当有连接时,我没有运气。以下是我的查询的最小化版本:
SELECT resources.title, catRel.catRef
FROM resources
LEFT JOIN placesRel ON placesRel.refId = resId
LEFT JOIN catRel ON refId = resId
WHERE ...
简而言之,我得到一个包含类别ID的列表,我想将结果限制为只有一个类别的 n 结果,例如,每个只显示两个结果catRef:
title catRef
Swizz Gubbinz 1
Runcible Spoons 1
Peter Pan DVD 2
Button Moon 2
Monkey Alan 3
Bilge Pump 3
答案 0 :(得分:2)
如何在联接中使用子查询。我不确定哪个表refID和resID属于.....但
SELECT resources.title, catRel.catRef
FROM resources
LEFT JOIN placesRel ON placesRel.refId = resId
LEFT JOIN catRel as cr1 ON cr1.catRel.primaryKey in (select cr2.primaryKey from catRel as cr2 where cr2.refID = resId Limit 0,2)
WHERE ...
答案 1 :(得分:0)
由于缺少MySQL的窗口函数,答案并非无足轻重。 这是一个通过利用MySQL的GROUP_CONCAT选择每组前N个记录的技巧: MySQL: Selecting Top N Records Per Group
作为聚合函数,可以操纵GROUP_CONCAT以按所需顺序提供串联字符串。使用文本操作,解析字符串。 (可选)将值转换为适当的类型。