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

标签 mysql stored-procedures

我有一个包含 2 个表的 mysql 数据库:usersloginsusers 表包含用户信息,logins 表包含用户可以登录的联系人登录 ID。这些登录 ID 是电子邮件或电话号码。这些登录 ID 充当公共(public) 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;

这可以将 tempTablepulic_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/

相关文章:

MySQL创建一个循环自身的存储过程

mysql - 从 SQL Server 存储过程调用 MySQL 存储过程/查询

php - 带连接的 SQL SELECT 可排除用户已回答的项目

mysql - 如何在sql中得到不同的结果?

c# - 如何在c#中将dataGridView行文本插入数据库

django - Postgres 函数未按预期返回输出参数

php - 存储过程中的 SQL 查询与从 PHP 执行的 SQL 有何不同?

sql-server - 为什么我们不能在 SQL Server 的函数内执行存储过程

mysql - 如何打印mysql中SUBSTRING_INDEX()字段的数据

mysql - 安装 PHP Recess 框架,出现错误 : Can't connect to local MySQL server through socket '/tmp/mysql.sock'