如何为每个父母收集最多的记录

问题描述 投票:0回答:1

我目前正在从事一个电子商务项目,我想创建一个登录页面,该页面显示每个产品类别,每个类别显示4个最新产品。我使用的是MySQL,普通查询。

我的数据库非常简单,有一个products表和一个product_category表。当然,有一个从products表到product_category表的链接:product_category_id。

编辑:我创建了一个数据库提琴:https://www.db-fiddle.com/f/fmy7mBfZ2vcu7hhumU59ou/0

当然,排序很容易,但是每个category_id我只需要4个产品结果。

在product_category表上方,有一个product_main_category表,但在此示例中,我认为这无关紧要。

mysql database subquery limit
1个回答
0
投票

您可以在mysql 5.7中做到这一点

SELECT
    t.`id`
    , t.`product_category_id` 
    ,t.`name`, t.`slug`
    , t.`description`
    , t.`price`
    , t.`created_at`
    , t.`updated_at`
FROM
(
    SELECT 

        `id`, `name`, `slug`, `description`, `price`, `created_at`, `updated_at`,
        @row_num:=CASE WHEN @p_id = product_category_id THEN @row_num + 1 ELSE 1 END AS rn,
        @p_id:=product_category_id as product_category_id

    FROM
        products,(SELECT @p_id := 0) a1,(SELECT @row_num := 0) a2
    ORDER BY product_category_id, created_at
) t inner join product_categories pc on t.product_category_id = pc.id
WHERE t.rn <=4
ORDER BY t.product_category_id, t.id; 

哪个会给您以下结果

id | product_category_id |名称|子弹|描述|价格| created_at | Updated_at-:| ------------------:| :------------------- | :------------------------------------------------- ------------------- | :------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------ | -----:| :------------------ | :------------------17 | 1 |桑德拉·汤普森| dolores-quidem-vel-sit-conequatur | Deroitis et est.Sed m​​olestias qui minima enim的Porro dolorem voluptas sapiente。等等,请不要使用volutetate recusandae optio quaerat。 Est occaecati eos non nostrum voluptatem porro。 | 103.96 | 2020-03-12 23:38:50 | 2020-04-07 18:38:3538 | 1 | Domenic Kozey先生| a-vero-quis-facilis |代表公共关系。 Deserunt maiores totam esse在voluptas等。 Iusto et harum animi tenetur iste voluptatem。 | 195.03 | 2020-03-09 04:10:12 | 2020-04-07 18:38:3546 | 1 |罗萨里奥·施密特|蛋黄酱中的蛋黄酱| Nisi delectus labour autem qui dolores beatae accusamus。 Libero totam consectetur aut rerum atque。 | 126.25 | 2020-03-13 02:12:21 | 2020-04-07 18:38:3548 | 1 | Kaela Lueilwitz V | ipsum-laborum-beatae-quia-repellat-hic-maxime |玛尼非库存量。等准身分证字号。腐败sed maiores rem。 43.01 | 2020-03-11 00:57:50 | 2020-04-07 18:38:356 | 2 |杰里米·施耐德|坐-autem-molestiae-eveniet |在最低限度内,Corporis quidem aut nostrum suscipit。 Nostrum porro dicta quo ut vero inventore enim。 Repudiandae architecto voluptatem temporibus illo eum。 | 3.77 | 2020-03-11 08:06:41 | 2020-04-07 18:38:3527 | 2 |德文·希克| eaque-explicabo-aliquid-architecto-rem-odt-atque | Molestiae molestias eos voluptatem vero sunt id voluptatem neque。 Molestiae nam暨无液体。非绝对和非偶然性。 | 60.81 | 2020-03-09 05:34:30 | 2020-04-07 18:38:3532 | 2 | Liana Torp教授|准易溶溶质挥发物二重奏| Voluptas est saepe voluptatem facere分解属。 Esse Rerum Nihil Deleniti Nihil。切成薄片死胡同等。 | 67.77 | 2020-03-16 00:27:40 | 2020-04-07 18:38:3533 | 2 | Abdiel Schowalter | quas-sapiente-omnis-aut-et-rerum-perferendis | Fuga dolor dolore等人在影片中。大众需要的质量Quam conequequatur ea quiores qui consequatur reiciendis。 | 3.53 | 2020-03-08 01:00:48 | 2020-04-07 18:38:3520 | 3 | Eleazar Mante先生IV | voluptatem-conequatur-conequuntur-qui-veritatis-prodor-dolquo | Illum sed eaque腐败的风俗。 Sunt deserunt et iusto possimus id hic totam。等临时性临时性准准。 | 91.52 | 2020-03-08 07:44:49 | 2020-04-07 18:38:3523 | 3 |弗雷迪·莫拉|错误-auturi-异常-fuga-aperiam-sunt-illum-ea | Libero non numquam optio。 Nam aut reiciendis必定会动荡。 Molestias officia在est tenetur中。 | 181.54 | 2020-03-30 05:25:37 | 2020-04-07 18:38:3536 | 3 |阿尔比娜·汉森| nam-et-labore-ipsum-quidem-aut |维持现状。准等式。 Dolores incidunt autem blanditiis officiis dolor accusamus。 | 97.39 | 2020-03-26 03:35:56 | 2020-04-07 18:38:3544 | 3 | Kenyon Mertz | ut-aliquam-aut-modi-sit-sunt-sint-dignissimos |贪污罪案书中的多洛雷书。 Aspernatur aspernatur结果导致排斥。最低限度的阿里夸姆·多洛雷姆·努库姆变种。 | 47.23 | 2020-03-21 10:29:19 | 2020-04-07 18:38:35

db <>小提琴here

结果是有序的,因此您可以看到每个类别有4行。

因此,应检查或调整此顺序和内部选择

© www.soinside.com 2019 - 2024. All rights reserved.