努力想出一个只有mysql的解决方案。
简化设置:
两张桌子:
Table A id | value | price 1 | 2 | 5.95 2 | 5 | 7.95 3 | 30 | 8.95
Table B: color | min_value | max_value green | 1 | 3 blue | 3 | 10 red | 10 | 35 orange | 25 | 50
根据表B中的定义,我想将颜色列加到表A中的数据上。在这个例子中,我需要知道与表A中所有项目相关的平均价格。然而,定义可以重叠(即,id 3是红色和橙色)。
我知道我可以使用python(在这个项目的情况下)递归遍历每种颜色并提取匹配的值然后平均价格,但我希望通过做mysql来简化它。
感谢您提供任何帮助/指导!
答案 0 :(得分:2)
您不需要做任何特殊操作,SQL中的默认情况是,如果表中的一行与另一行中的两行匹配,则结果中将得到两行。
SELECT color, avg(price)
FROM A, B
WHERE A.value BETWEEN B.min_value AND B.max_value
GROUP BY color