假设你的表名是“table55”
然后使用下面的查询来创建存储过程
delimiter |
create procedure testProcedure()
BEGIN
declare flag1 int default 0;
DECLARE done INT DEFAULT FALSE;
declare tempid int;
declare tempdate date;
declare tempname,templogin,templogout varchar(50);
DECLARE cur1 CURSOR FOR SELECT * from table55 where `name` like 'arjun' and id=1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
drop table if exists mytemptable;
CREATE TEMPORARY TABLE IF NOT EXISTS mytemptable (`name` VARCHAR(50) NULL DEFAULT NULL,
`id` INT(11) NULL DEFAULT NULL,
`date` DATE NULL DEFAULT NULL,
`login` VARCHAR(50) NULL DEFAULT NULL,
`logout` VARCHAR(50) NULL DEFAULT NULL);
OPEN cur1;
read_loop: LOOP
FETCH cur1 into tempname,tempid,tempdate,templogin,templogout;
if flag1=0 then
insert into mytemptable(name,id,`date`,login,logout) values (tempname,tempid,tempdate,templogin,templogout);
set flag1=1;
else
insert into mytemptable(name,id,`date`,login,logout) values ('',null,tempdate,templogin,templogout);
end if;
IF done THEN
LEAVE read_loop;
END IF;
END LOOP;
select * from mytemptable;
END
|
delimiter;
你有上面的查询只运行一次。之后,您可以使用以下查询获得所需的结果
call testProcedure
要存储在SQL中吗?我不知道这是如何可能的。如果您正在讨论将其展示给用户,我们需要有关您使用的技术的更多信息(例如报告工具,网站,Windows应用程序......)。作为一个方面说明,可能值得使表格正常化来创建一个用户表。 – Greg
在哪个基础上你决定阿尔琼应该显示在第二排? –
这要做,当我显示给用户,我正在做的Windows应用程序 – Preethi