我有一个包含 2 个表的 mysql 数据库:users
和 logins
。 users
表包含用户信息,logins
表包含用户可以登录的联系人登录 ID。这些登录 ID 是电子邮件或电话号码。这些登录 ID 充当公共(public) ID。 userId
永远不会在结果中给出。
现在我正在尝试创建一个存储过程,它提供所有用户及其电话号码和电子邮件的列表(请参阅tempTable
)。
到目前为止我已经编写了以下过程:
CREATE TEMPORARY TABLE tempTable (
public_id varchar(255) DEFAULT '',
info1 varchar(255) DEFAULT '',
info2 varchar(255) DEFAULT '',
info3 varchar(255) DEFAULT '',
phone varchar(255) DEFAULT '',
email varchar(255) DEFAULT ''
);
insert into tempTable(public_id, info1, info2, info3 ) (select userid, info1, info2, info3 from users);
Update tempTable
Inner Join logins
On tempTable.public_id = logins.userid
Set
tempTable.public_id = logins.login_id;
这可以将 tempTable
的 pulic_id
更改为 logins
表的 login_id
。但现在,如何将电话和电子邮件放入 tempTable
中?
最佳答案
代码如下:
CREATE TEMPORARY TABLE tempTable ( public_id varchar(255) DEFAULT '', info1 varchar(255) DEFAULT '', info2 varchar(255) DEFAULT '', info3 varchar(255) DEFAULT '', phone varchar(255) DEFAULT '', email varchar(255) DEFAULT '' ); insert into tempTable(public_id, info1, info2, info3 ) (select userid, info1, info2, info3 from users); Update tempTable Inner Join logins On tempTable.public_id = logins.userid Set tempTable.public_id = logins.login_id, tempTable.email = logins.login_id Where logins.login_type = 'email'; Update tempTable Inner Join logins On tempTable.public_id = logins.userid Set tempTable.public_id = logins.login_id, tempTable.mobile = logins.login_id Where logins.login_type = 'mobile';
关于mysql - 如何合并mysql存储过程中的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843253/