假设我有一个小部件数据库。我显示了每个小部件的前十个分组的列表,按类别分隔。
假设我想显示类别 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/