在mysql里我写一个存储过程
SELECT * FROM TABLE1;SELECT @num:=1 FROM TABLE2;
这样他会返回2个结果集,请问如何不让TABLE2的结果集返回回去,语法不变,或者不做大的改动
用SET什么的肯定不会返回这个我知道,但是很难满足需求用SET
比如
SELECT @num:=@num+1,@num1:=@num1+1 FROM TABLE2;
用SET就不能替代了,请问这样的话有没有什么办法不将table2的结果集返回回去,谢谢了
又不让用临时表。

解决方案 »

  1.   

    SELECT *,(SELECT DISTINCT @num:=1 FROM TABLE2) as aa FROM TABLE1;要达到什么目的
      

  2.   

    你用SELECT,肯定有结果集,如果只是变量,SELECT INTO 变量名
      

  3.   

    SELECT INTO只能针对单条记录。
      

  4.   

    SELECT *,(SELECT DISTINCT @num:=1 FROM TABLE2) as aa FROM TABLE1;我要返回的TABLE1里不要这个SELECT DISTINCT @num:=1 FROM TABLE2) as aa 
    这样还是把这个返回了,我要取出@num,并且不返回table2
      

  5.   

    @num是什么值?如果是记录数
    select count(*) into @num from tt
      

  6.   

    select count(*) into @num from tt
    我在做这样一个功能,
    SELECT @NUMTXT:=concat(NUMTXT,'clnName') FROM table1;
    SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT)类似这样一个功能,但是最后他把TABLE1返回回去了。当然用临时表也行,但是领导不让用。
      

  7.   

    你用SELECT肯定要返回记录集,
    SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT) 你要怎么处理你用游标打开 SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT) 试试
      

  8.   

    or
    create table dd as 
    SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT)
      

  9.   

    create table dd as  
    SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT)
    这倒是个不错的办法,但是这个dd需不需要去手动释放他呢?他存在内存中还是磁盘上?
      

  10.   

    SELECT * FROM TABLE2 WHERE clnName in (@NUMTXT) 你要怎么处理
    为什么要取得上述记录集,你要怎么处理
      

  11.   

    磁盘上,不用DROP TABLE DD 即可,建议用此方法