我的名为GetFamilyTree
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'))
请告诉我该怎么做。
答案 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 )
请参阅:
GetFamilyTree('550')
的返回字符串进行演示。