如何在临时

时间:2015-08-20 06:38:49

标签: mysql

我有一个存储过程,其中一个in参数返回多行,包含3个不同的列。我希望将这个结果插入另一个表中,其中包含这3个列和其他表单个字段。

但是,当我创建临时表时,它会显示一个空白的结果集。

有人可以帮我解决这个问题吗?

CREATE DEFINER=`root`@`localhost` PROCEDURE `getContactRolePermission`(
in contactroleid double
-- inout PermissionTableID double
)
BEGIN

select -- entitydetails.id,
 contact.id as userid,
 -- contacttyperolemap.contacttypeId ,
 contacttyperolemap.roleid ,rolepermission.permissionid
 from contacttyperolemap 
 join rolepermission on contacttyperolemap.roleid=rolepermission.roleid
 join entitydetails on  entitydetails.id = contacttyperolemap.ContactTypeID 
 join contact on contact.contactTypeID = entitydetails.id 
 where  contacttyperolemap.contactTypeID = contactroleid
 order by contact.id;

CREATE temporary TABLE tmp(
     ID double ,
    userid double ,
    roleid double ,
    permissionid double
);

END


stored procedures result is
uid rid pid 
2   1   5
2   1   2
2   1   3
2   1   4
2   1   1
23  1   4
23  1   1
23  1   5
23  1   2
23  1   3
26  1   4
26  1   1
26  1   5
26  1   2
26  1   3

我想在userpermission

中插入此数据
schema is
id  uid rid pid
1   10  2   1

2 个答案:

答案 0 :(得分:0)

看起来您需要为前3行创建视图而不是存储过程。然后在单独的查询中,您可以查询该视图中的任何列,并将该数据与您希望从其他表中获得的任何其他数据连接起来。希望我能正确地阅读这个问题。下面是关于创建视图的文章:https://msdn.microsoft.com/en-us/library/ms187956.aspx

答案 1 :(得分:0)

使用INSERT ... SELECT命令填充目标表。

而且,你的临时表显示空结果,因为你没有填写它。