mysql in子句使用过程而不是子查询

时间:2018-01-06 11:48:14

标签: php mysql stored-procedures

我创建了一个返回officeid

列的过程
call officetree(15);

我需要通过 officetree 程序获取officeid回归下的员工名单

select * from master_employee where officeid in ( here i want put my officeids return from procedure)

如果是的话,这是否可能实现此目的。

程序内

  

下面是ofcid是程序参数

select  `ofc_id`
 from (select * from master_office
     order by `ofc_parent_id`, `ofc_id`) master_office,
    (select @pv := ofcid) office
 where (find_in_set(`ofc_parent_id`, @pv) > 0 
and @pv := concat(@pv, ',', `ofc_id`)) or ofc_id=ofcid

2 个答案:

答案 0 :(得分:0)

不,AFAIK,你不能在SP中使用SP作为子查询。

参考:Using a stored procedure as subquery

参考:https://forums.mysql.com/read.php?10,556522,556538#msg-556538

Is it possible to call stored procs in MySQL 5.5 subqueries. No.

对于一个建议,尽量少使用存储过程(我十年的经验告诉我)

答案 1 :(得分:0)

我认为没有办法像子查询一样使用存储过程结果。

您的替代方案:

  1. 使用过程中的语句作为子查询。
  2. 从PHP中的SP获取ID,并使用获取的ID执行第二个查询。 select * from master_employee where officeid in ( list of previously fetched IDs )
  3. 对树结构使用更强大的设计,如“物化路径”或“传递闭包表”