MySql选择最大值的总和

时间:2015-01-15 16:03:42

标签: mysql

我有三张桌子

----+-------
id  | ref1 |
----+-------
 2  | 10   |
----+-------
 2  | 11   |
----+-------
 3  | 12   |
----+-------

表2

+-------+-------
|ref1   | ref2 |
-------+--------
|10     | 20   |
--------+-------
|10     | 22   |
--------+-------
|11     | 35   |
--------+-------
|26     |47    |

表3

-----+------
ref2 |price|
-----+------
20   |50   |
-----+------
22   |5    |
-----+-----
35   |10   |

我的问题是如何根据以下内容得到价格总和:table2的ref2 = table2的ref2和table2的ref1 = id person = 2时表人的ref1

如果我在表2中有双排,我需要只拿最高价格(对于表2的参考10,我需要采取唯一的价格50)

结果应为50 + 10

我希望这是可以理解的

谢谢

2 个答案:

答案 0 :(得分:0)

您可以从子查询

中每个人员ID和ref1列的组合中获得表3中的最大值

然后,您可以从这些值中获取maximum

select t.id, max(refPrice) as maxPrice
from 
(
select p.id , p.ref1 + max(t3.price) as refPrice
from person p
join table2 t2
on p.ref1 = t2.ref1
join table3 t3
on t2.ref2 = t3.ref2
group by p.id, p.ref1
  )t
group by t.id

答案 1 :(得分:0)

试试这种方式......

SELECT SUM(GroupSum) as
   TotalSum
FROM(
   SELECT MAX(t3.price) as GroupSum FROM Person p 
   INNER JOIN Table2 t2 ON p.ref1=t2.ref1
   INNER JOIN Table3 t3 ON
   t2.ref2=t3.ref2 WHERE p.id=2
   GROUP BY p.id,p.ref1
   ) ttl
GROUP BY t.id