MySQL 使用例程输出加入 table

MySQL using routine output to join on table

我有一个使用

调用的例程
SET @p0='55'; SET @p1='-6'; SET @p2='100'; CALL `distanceSearch`(@p0, @p1, @p2);

基本上我通过纬度、经度和距离来搜索用户,例如 100 英里。该例程创建一个临时文件 table 并将结果插入其中。当我执行它时,返回一个结果集。

当我尝试像这样执行它时,我 运行 出现语法错误

SET @p0='55'; SET @p1='-6'; SET @p2='100'; 
select foo.* from (CALL `distanceSearch`(@p0, @p1, @p2)) as foo

我做错了什么?如何使用此结果加入另一个 table?

不,您不能像那样从过程中执行 select 但正如您所说 例程会创建一个临时文件 table 并将结果插入其中

在这种情况下,如果您已经知道临时的 table 名称,那么从 table

中执行 SELECT
select * from temporary_table_name

否则,将您的例程转换为 table 值函数而不是存储过程,然后您可以说

select * from fn_runRoutine_Job()