gpt4 book ai didi

php mysql加入2个表并从每个组中获取有限的行

转载 作者:行者123 更新时间:2023-11-29 06:24:30 25 4
gpt4 key购买 nike

我有 2 个表,例如类别、产品。我想在单个查询中从每个类别中获取 2 个产品。

分类表包含以下内容

intCatId    varName

1 cat1

2 cat2

3 cat3

======================

产品表

intPId    PName  intCatId    

1 pro1 1

2 pro2 1

3 pro3 1

4 pro4 3

5 pro6 3

6 pro7 2

我使用了以下查询

SELECT a.*, b.* FROM product a INNER JOIN category b ON a.intCatId=b.intCatId GROUP BY b.intCatId

How to apply limit here. 

我需要输出为

intCatId     varName    intPid     PName

1 cat1 1 pro1

1 cat1 1 pro1

2 cat2 6 pro7

3 cat3 4 pro4

3 cat3 5 pro6

请帮帮我。谢谢

最佳答案

不幸的是,Mysql 不支持像其他 RDBMS 那样的窗口函数查询,但您可以通过使用用户定义的变量来使用排名查询

select intCatId, varName,intPId, PName,rank
from (
select *, @r:= case when @g = intCatId
then @r + 1
else 1 end rank,
@g:= intCatId
from(
select c.intCatId,c.varName, p.intPId, p.PName
from category c
join product p on c.intCatId=p.intCatId
order by c.intCatId
) a cross join(select @g:=null,@r:=0) t
) t1
where rank <= 2

DEMO

关于php mysql加入2个表并从每个组中获取有限的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com