我想选择具有data
的cats
表的联接。加入cats.id = data.cat_id
。对于每个唯一类别id cat.id
,限制为3个data
表行
表:cats
id | parent_id | name
---+-----------+--------
1 | 0 | Games
2 | 0 | Music
3 | 0 | Apps
表:data
--------------------------
id | cat_id | data
---+---------+------------
1 | 1 | Cat1 Data1
2 | 1 | Cat1 Data2
3 | 1 | Cat1 Data3
4 | 1 | Cat1 Data4
---+---------+------------
5 | 2 | Cat2 Data1
6 | 2 | Cat2 Data2
7 | 2 | Cat2 Data3
8 | 2 | Cat3 Data4
---+---------+------------
9 | 3 | Cat3 Data1
10 | 3 | Cat3 Data2
11 | 3 | Cat3 Data3
12 | 3 | Cat3 Data4
我想要像贝娄一样。对于每行一个cats
,选择三个data
行选择。
category | data
----------+------------
Games | Cat1 Data1
Games | Cat1 Data2
Games | Cat1 Data3
----------+------------
Music | Cat2 Data1
Music | Cat2 Data2
Music | Cat2 Data3
----------+------------
Apps | Cat3 Data1
Apps | Cat3 Data2
Apps | Cat3 Data3
如果group_concat
和,
不可行,也适用于我。我会用php拆分它。
cat_name | data
----------+-------------------------------------
Book | Cat1 Data1, Cat1 Data2, Cat1 Data3
Music | Cat2 Data1, Cat2 Data2, Cat2 Data3
Game | Cat3 Data1, Cat3 Data2, Cat3 Data3
希望这能解决您的
SELECT
sq.category,
sq.data
FROM (
SELECT
DATA.*,
cats.name AS category,
row_number() over(PARTITION BY cat_id ORDER BY cat_id DESC) AS ROW_COUNT FROM `data`
INNER JOIN cats ON data.cat_id = cats.id
) AS sq
WHERE
ROW_COUNT <= 3
在这里查询。。。ROW_COUNT<=3您可以设置选择限制。