MySQL存储函数与表

时间:2014-03-13 13:58:26

标签: mysql

我的名为GetFamilyTree

的mysql函数返回了以下结果
565,586,579,587,596,591,594,595

另一个名为salary的表包含以下内容

+------+-------+
| uid  | sal   |
+------+-------+
|  565 | 10000 |
|  568 | 20000 |
|  587 | 15000 |
|  595 |  7000 |
|  596 | 40000 |
+------+-------+

我需要所有成员的总薪水。

我不想使用临时表。

到目前为止,我已经尝试了以下内容但没有成功

select sum(sal) from salary where uid in (select GetFamilyTree('550'))

请告诉我该怎么做。

1 个答案:

答案 0 :(得分:1)

当一组值采用CSV格式时,您需要使用find_in_set。值必须仅用逗号分隔,而不能用其他任何东西分隔。

试试这个:

select 
  sum(s.sal) total_salary
from 
  salary s, 
  (select GetFamilyTree('550') as ftree) as t 
where 
  s.uid find_in_set( s.uid, t.free )

请参阅