You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL:如何获取Top 10产品对应的唯一产品类型?

获取Top10产品对应的唯一产品类型列表

核心思路是先筛选出前10个高分产品,再基于这些产品关联产品类型表并去重,避免直接在全局关联后限制数量的问题。

方法一:子查询实现

SELECT DISTINCT pt.type_name
FROM (
    -- 先按score降序取前10个产品的类型ID
    SELECT product_type_id
    FROM products
    ORDER BY score DESC LIMIT 10
) AS top_products
INNER JOIN product_types pt ON top_products.product_type_id = pt.id;

方法二:CTE(公共表表达式)实现(可读性更强)

WITH top_products AS (
    SELECT product_type_id
    FROM products
    ORDER BY score DESC LIMIT 10
)
SELECT DISTINCT pt.type_name
FROM top_products
JOIN product_types pt ON top_products.product_type_id = pt.id;

为什么之前的方法失效?

你之前直接在主查询中加DISTINCT type_name和LIMIT,逻辑是先对所有产品关联类型后去重,再截取指定数量的类型,这和“先取Top10产品再拿对应类型”的需求完全相反。上面两种写法都是先锁定前10个产品,再基于这个子集去获取对应的唯一类型,完全匹配需求。

内容的提问来源于stack exchange,提问作者Mr Fett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:43:08