RT
  我好像没有返回这记录集,在线请高手指点。小弟不圣感谢,小弟分数不多了。希望高手不要嫌弃,代码很简单,就是从表读45次,每次id不同,然后插入到临时表里。在线等高手。
begin
declare tatol int(10);
declare id int;
declare name varchar(20);
declare taidu_manyi int(10);
declare taidu_yiban int(10);
declare taidu_bumanyi int(10);
declare huanjin_manyi int(10);
declare huanjin_yiban int(10);
declare huanjin_bumanyi int(10);
declare zhuangkuang_manyi int(10);
declare zhuangkuang_yiban int(10);
declare zhuangkuang_bumanyi int(10);
declare pingjun int(10);
DROP TABLE IF EXISTS TEMP;
CREATE TABLE `TEMP` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`taidu_manyi` INT( 20 ) NOT NULL ,
`taidu_yiban` INT( 20 ) NOT NULL ,
`taidu_bumanyi` INT( 20 ) NOT NULL ,
`huanjin_manyi` INT( 20 ) NOT NULL ,
`huanjin_yiban` INT( 20 ) NOT NULL ,
`huanjin_bumanyi` INT( 20 ) NOT NULL ,
`zhuangkuang_manyi` INT( 20 ) NOT NULL ,
`zhuangkuang_yiban` INT( 20 ) NOT NULL ,
`zhuangkuang_bumanyi` INT( 20 ) NOT NULL ,
`pingjun` INT( 20 ) NOT NULL ,
`title` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL) ENGINE = MYISAM ;
select count(*) into tatol from wxw_myself;
set id=1;
while id<=45 do
select (count(*)/tatol)*100 into taidu_manyi from wxw_card where nid=id and service_taidu=10;
select (count(*)/tatol)*100 into taidu_yiban from wxw_card where nid=id and service_taidu=8;
select (count(*)/tatol)*100 into taidu_bumanyi from wxw_card where nid=id and service_taidu=6;
select (count(*)/tatol)*100 into huanjin_manyi from wxw_card where nid=id and service_huanjin=10;
select (count(*)/tatol)*100 into huanjin_yiban from wxw_card where nid=id and service_huanjin=8;
select (count(*)/tatol)*100 into huanjin_bumanyi from wxw_card where nid=id and service_huanjin=6;
select (count(*)/tatol)*100 into zhuangkuang_manyi from wxw_card where nid=id and service_zhuangkuang=10;
select (count(*)/tatol)*100 into zhuangkuang_yiban from wxw_card where nid=id and service_zhuangkuang=8;
select (count(*)/tatol)*100 into zhuangkuang_bumanyi from wxw_card where nid=id and service_zhuangkuang=6;
select title into name from wxw_name;
select (sum(service_taidu)+sum(service_huanjin)+sum(service_zhuangkuang))/3/tatol into pingjun from wxw_card where nid=id;
insert into temp values('',taidu_manyi,taidu_yiban,taidu_bumanyi,huanjin_manyi,huanjin_yiban,huanjin_bumanyi,zhuangkuang_manyi,zhuangkuang_yiban,zhuangkuang_bumanyi);
set id=id+1;
end while;
end

解决方案 »

  1.   

    mysql 建立临时表你还少了
    CREATE temporary TABLE `TEMP` ( 
      

  2.   

    我建立了临时表了。不过没有加temporary,,这个是什么意思。应该没有关系吧。
      

  3.   

    temporary就是建临时表的意思!
      

  4.   

    select (count(*)/tatol)*100 into taidu_manyi from wxw_card where nid=id and service_taidu=10; 
    像这样返回的只是一条记录吧。我在phpmyadmin里面试了。就一个数据。不是记录集吧。
      

  5.   

    所有的select ....into...都是一条记录吗?你应该有条语句是有多条记录,程序才会报Result consisted of more than one row错