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()
我有一个使用
调用的例程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()