从 MySQL 中的多个类别中选择前 3 行
从表中的每个类别中选择前 3 行可能具有挑战性。正如最初尝试中所概述的,一种利用视图和子查询的方法可能会返回不正确的结果。
更有效的方法是采用分析函数,而 MySQL 本身并不支持该函数。但是,可以使用变量来模拟这些函数。操作方法如下:
SELECT x.*
FROM (
SELECT t.*,
CASE
WHEN @category != t.category THEN @rownum := 1
ELSE @rownum := @rownum 1
END AS rank,
@category := t.category AS var_category
FROM TBL_ARTIKUJT t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY t.category
) x
WHERE x.rank 此查询使用 JOIN 操作初始化变量 @rownum 和 @category。然后,它根据每一行的类别为其分配排名,如果类别发生变化,排名就会递增。
最后,查询仅选择排名为 3 或更低的行。请注意,您可能需要修改 SELECT x.* 子句以仅包含所需的列。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3