如何将值与一些其他数据从一个表复制到另一表

时间:2019-05-23 11:03:55

标签: mysql

有两个表:

具有内容的名字命名的登录名

+--------------+------------------------------------------------+
| id           | password                                       |
+--------------+------------------------------------------------+
| Ann          | {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  |
| John         | {SSHA}YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY  |
| Walter       | {SSHA}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ  |
+--------------+------------------------------------------------+

第二个具有内容的邮箱:

+-----------------+------------+-------+---------------------+-----------++----------+
| username        | password   | name  | mailbox_path_prefix | quota     |  domain   |
+-----------------+------------+-------+---------------------+-----------+-----------+
| lucas@mail.com  | {SSHA}XXXX | lucas | /var/vmail/         | 104857600 |  mail.com |
+-----------------+------------+-------+---------------------+-----------+-----------+

我必须将数据从第一个表复制到第二个表。 例如:

1)第一个表的ID中的用户名是Ann,我需要添加@ mail.com,结果应为:Ann@mail.com
2)密码将原样复制。
3)名称将从第一个表的id复制,因为它是
4)mailbox_path_prefix,配额和域在所有行都相同;

我唯一能做的是:

INSERT INTO Mailbox (name,password)
SELECT id, password
FROM Logins;

我不知道如何使用@ mail.com加入登录并插入其他值。

请帮助。

1 个答案:

答案 0 :(得分:3)

尝试此插入查询:

INSERT INTO Mailbox (username, password, name, mailbox_path_prefix, quota, domain)
SELECT
    CONCAT(id, '@mail.com'),
    password,
    id,
    'var/vmail/',
    104857600,
    'mail.com'
FROM Logins;

上面唯一可能不解释的部分是使用CONCAT来构建用户名。另外请注意,如果我们想为所有行插入相同的值,则可以选择一个常量值(例如字符串文字或数字)。