有两个表:
具有内容的名字命名的登录名
+--------------+------------------------------------------------+
| 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加入登录并插入其他值。
请帮助。
答案 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
来构建用户名。另外请注意,如果我们想为所有行插入相同的值,则可以选择一个常量值(例如字符串文字或数字)。