BEGIN
    DECLARE stopIDX int DEFAULT 0;
    DECLARE returnVal varchar(222) DEFAULT '' ;
    DECLARE mycursor CURSOR  FOR 
        SELECT line.Line_ID FROM line;-- line表有6条记录
 
    DECLARE CONTINUE HANDLER FOR NOT found SET stopIDX = 1;
 
    OPEN mycursor;
     
    REPEAT
    FETCH mycursor INTO returnVal;
if stopIDX=0 then
        SELECT * from BanCi where Line_ID = returnVal;--产生6个结果集。
end if;
    UNTIL stopIDX 
    END REPEAT;
 
    CLOSE mycursor;
END
描述:mysql 中有以上存储过程, 将line 表(只有6条记录) 的id 赋给游标,遍历游标,搜索班次表(banci) 出现6个结果集(各一条记录)。我想知道能不能 使用类似union 这样的谓词达到 一个结果集(6条记录)。如果有。怎么请贴个实现代码。O(∩_∩)O谢谢

解决方案 »

  1.   

    直接用select * from tb where id in ();
      

  2.   

    存储过程中无法合并结果集。你可以把每个结果输入到一个临时表中,然后最后 select * from 临时表
    或者如楼上的方案,使用 where Line_ID in (select Line_ID  from FROM line)
      

  3.   

    SELECT * from BanCi a inner join line b on a.Line_ID=b.line_ID
    生成1个物理表 OR 打开此游标