mysql - 我将如何在 MySQL 中执行此操作?

标签 mysql

假设我有一个小部件数据库。我显示了每个小部件的前十个分组的列表,按类别分隔。

假设我想显示类别 A 中所有小部件的列表,但我想根据该类别中小部件的总数对它们进行排序,并且只显示前 10 个分组。

所以,我的列表可能看起来像这样。

A 类中的顶级分组

1990 年公司 1 制作了 100 个小部件。
1993 年公司 1 制造了 90 个小部件。
1993 年公司 3 制造了 70 个小部件。
等等...(10组)

这部分很简单,但现在假设我希望某个分组始终出现在列表中,即使它实际上没有进入前十名。

假设我总是想显示公司 1 在 2009 年制作的小部件的数量,但我希望该分组随机显示在我的列表中的某个位置(不是第一个或最后一个)

所以最终列表应该类似于

A 类中的顶级分组

1990 年公司 1 制作了 100 个小部件。
1993 年公司 1 制造了 90 个小部件。
2009 年公司 1 制作了 30 个小部件。
1993 年公司 3 制造了 70 个小部件。

我如何在 MySQL 中实现这一点?

谢谢

编辑:

目前,我的查询如下所示

        SELECT
            year, 
            manufacturer,
            MAX(price) AS price,
            image_url,
            COUNT(id) AS total
        FROM 
            widgets
        WHERE
            category_id = A
        AND
            year <> ''
        AND
            manufacturer <> ''
        GROUP BY  
            category_id,
            manufacturer,
            year
        ORDER BY  
            total DESC,
            price ASC
        LIMIT 
            10
    );

那里没有强制分组。

放置不一定是随机的,只是不应该位于任何极端。该列表应包括强制列表在内的 10 个分组。所以 9 + 1

最佳答案

我将使用 UNION 查询:将当前查询与 2009 年的查询联合起来,然后在表示层中处理排序。

关于mysql - 我将如何在 MySQL 中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685686/

相关文章:

mysql - 错误: Method missing for Active record query : find_by_attribute_name ('test_data' ) not working

php - 查询为两个唯一字段中的每一个选择具有特定 ID 的行并计算第三个字段的位置

mysql + 显示表并为每个表插入行号

mysql - 按组计算时间差

javascript - 根据两个下拉菜单中的值填充并显示 html 表格

php - 动态链接到 PDF

php - 如何在php中跟踪注销时间 session 并将其作为数据库保存在mysql中

mysql - 将mysql查询的结果存储在某个文件中

php - MySQL 加入一张表。使用 where 子句列出值,然后在下方列出值

php - 编辑数据库中的所有条目[php]