Mysql:从过程结果中创建值列表

时间:2017-08-23 10:15:55

标签: mysql stored-procedures

我有一个执行SELECT的id的存储过程(它在一个过程中的原因是它首先检查选择哪个ID)。

我想在SELECT * FROM products WHERE productID IN <resultSet>这样的过程查询中使用该结果集。

但我不知道如何将程序的结果集放入范围/间隔/ ...?变量来执行该选择。我错过了什么?

修改:这个问题与SQL server stored procedure return a table实际上并不重复,它只是具有相同的解决方案:存储过程不会返回任何内容。

1 个答案:

答案 0 :(得分:1)

MySQL存储过程不会返回值,但是你可以将结果存储在临时表中并在另一个查询中使用它们,怎么做?

  1. 在存储过程中,创建一个包含结果值的临时表:

    create procedure your_procedure()
    
        drop temporary table if exists _procedure_result_tmp;
    
        -- dump the result in a temporary table
    
        create temporary table _procedure_result_tmp 
          select id from your_table where <condition>;
    
     end
    
  2. 在查询中使用_procedure_result_tmp表:

    call your_procedure();
    select * FROM your_other_table 
      where id in (select id from _procedure_result_tmp);