尝试:
SELECT Substring_Index(Group_concat(ID
ORDER BY LJ.Population ASC
SEPARATOR '|'),
'|',
5)
FROM TableJ AS J
LEFT JOIN TableL AS L
ON L.J_ID = J.ID
LEFT JOIN TableB AS B
ON B.LJ_ID = L.F_ID
LEFT JOIN TableLJ AS LJ
ON LJ.ID = L.F_ID
GROUP BY J.ID
在
MySQL 8.0.2 and onwards
Window Functions
,以确定
Row_Number()
J.ID
. 我们可以分类
LJ.Population
以获得相应的行号。
现在,将此结果集用作
Derived Table
Group By
和
Concat()组
因此。
SELECT Group_Concat(dt.ID ORDER BY dt.rownumber ASC SEPARATOR '|')
FROM (
SELECT J.ID,
ROW_NUMBER() OVER (PARTITION BY J.ID
ORDER BY LJ.Population ASC) AS rownumber
FROM TableJ AS J
LEFT JOIN TableL AS L
ON L.J_ID = J.ID
LEFT JOIN TableB AS B
ON B.LJ_ID = L.F_ID
LEFT JOIN TableLJ AS LJ
ON LJ.ID = L.F_ID ) AS dt
WHERE dt.rownumber <= 5
GROUP BY dt.ID