如何在mysql存储过程中合并信息?

时间:2017-03-16 19:31:53

标签: mysql stored-procedures

我有一个包含2个表的mysql数据库:usersloginsusers表包含用户信息,logins表包含用户可以登录的联系人登录ID。这些登录ID是电子邮件或电话号码。这些登录ID充当公共ID。结果中永远不会发出userId

现在我正在尝试创建一个存储过程,其中包含所有用户的列表(请参阅tempTable)及其电话号码和电子邮件。

db model

到目前为止,我已经写了以下程序:

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;

这可以将pulic_id的{​​{1}}更改为tempTable表的login_id。但是现在,我如何将电话和电子邮件放入logins

1 个答案:

答案 0 :(得分:0)

代码如下:


    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';