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

如何用MySQL生成FRUIT的所有组合并计算对应价格总和?

实现MARKET表中水果的所有非空组合及价格总和计算

可以通过递归公共表表达式(CTE)实现这个需求,生成所有非空水果组合并计算对应价格总和,具体方案如下:

1. 插入测试数据

INSERT INTO MARKET(FRUIT, PRICE) VALUES ('APPLE', 2), ('BANANA', 3), ('GRAPE', 1);

2. 查询所有非空组合及价格总和

WITH RECURSIVE fruit_combinations AS (
    -- 初始数据集:单个水果的组合
    SELECT 
        FRUIT AS combo,
        PRICE AS total_price,
        FRUIT AS last_fruit
    FROM MARKET
    UNION ALL
    -- 递归拼接组合:确保不生成重复组合
    SELECT 
        fc.combo || '+' || m.FRUIT,
        fc.total_price + m.PRICE,
        m.FRUIT
    FROM fruit_combinations fc
    JOIN MARKET m ON m.FRUIT > fc.last_fruit
)
SELECT combo, total_price
FROM fruit_combinations
ORDER BY LENGTH(combo), combo;

3. 查询结果

combo                  total_price
---------------------- -----------
APPLE                  2
BANANA                 3
GRAPE                  1
APPLE+BANANA           5
APPLE+GRAPE            3
BANANA+GRAPE           4
APPLE+BANANA+GRAPE     6

代码说明

  • 递归CTE的初始阶段先提取每个单独的水果作为基础组合;
  • 递归阶段通过m.FRUIT > fc.last_fruit的JOIN条件,保证只拼接比当前组合最后一个水果排序靠后的水果,避免生成重复的组合(如不会出现BANANA+APPLE这类与APPLE+BANANA重复的结果);
  • 最终通过ORDER BY LENGTH(combo), combo让结果按组合长度、名称排序,与需求的输出顺序一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:22:25