0

努力想出一个mysql唯一的解决方案。

简化设置:

两张表:

表 A
编号 | 价值 | 价格
 1 | 2 | 5.95
 2 | 5 | 7.95
 3 | 30 | 8.95
表 B:
 颜色 | 最小值 | 最大值
绿色 | 1 | 3
蓝色 | 3 | 10
红色 | 10 | 35
橙色 | 25 | 50

根据表 B 中的定义,我想将颜色列连接到表 A 中的数据上。在此示例中,我需要按颜色知道与表 A 中所有项目相关联的平均价格。但是定义可以重叠(即 id 3 既是红色又是橙色)。

我知道我可以使用python(在这个项目的情况下)递归地遍历每种颜色并提取匹配值,然后是平均价格,但我很想通过mysql来简化它。

感谢您的任何帮助/指导!

4

1 回答 1

2

您不需要做任何特殊的事情,SQL 中的默认情况是,如果表中的一行匹配另一行中的两行,您将在结果中得到两行。

SELECT color, avg(price)
  FROM A, B
 WHERE A.value BETWEEN B.min_value AND B.max_value
 GROUP BY color
于 2013-09-02T22:08:20.357 回答