SQL:使用同一表(电子邮件地址)中另一列的内容更新列(用户名)

时间:2018-02-11 02:58:01

标签: mysql wordpress

我需要更新wordpress用户表中每个人的用户名,以便他们的电子邮件地址成为他们的用户名。

我是一个完整的SQL布偶,所以假设你向一个稍微愚蠢的5岁小孩解释这个:)

我打算尝试这样的事情:

UPDATE table_name SET usernamecolumn = emailaddresscolumn

但是因为我不知道自己在做什么,所以我想先在这里问一下!

1 个答案:

答案 0 :(得分:2)

你的尝试是正确的。

UPDATE WordpressUsers
SET username = emailaddress;

然而,可能会有一些问题'当你试试这个。

您需要确保emailaddress符合username列的大小。

-- Verify length to avoid truncation during UPDATE
SELECT MAX(LENGTH(emailaddress)) FROM WordpressUsers;

然后ALTER您的表格以允许增加数据长度。

ALTER TABLE WordpressUsers
MODIFY username VARCHAR(200);

实施例

DROP TABLE IF EXISTS WordpressUsers;

CREATE TABLE WordpressUsers (
    username VARCHAR(50) NOT NULL,
    emailaddress VARCHAR(200) NOT NULL);


INSERT INTO WordpressUsers (username, emailaddress)
VALUES ('joesmith', 'joe.smith@test.com')
    , ('janedoe', 'jane.doe@test.com')
    , ('johndoe', 'john.doe@test.com')
    , ('someone', 'someone@test.com')
    , ('someone', 'ReallyLongLongEmailAddress@ReallyReallyLongDomain.com');

-- verify        
SELECT * FROM WordpressUsers;

-- Verify length to avoid truncation during UPDATE
SELECT MAX(LENGTH(emailaddress)) FROM WordpressUsers;

ALTER TABLE WordpressUsers
MODIFY username VARCHAR(200);

-- UPDATE
UPDATE WordpressUsers
SET username = emailaddress;


-- verify        
SELECT * FROM WordpressUsers;

enter image description here

enter image description here

[DEMO]