我需要更新 wordpress 用户表中每个人的用户名,以便他们的电子邮件地址成为他们的用户名。
我是一个彻头彻尾的 SQL 木偶,所以假设你正在向一个有点笨的 5 岁 child 解释这个:)
我打算尝试这样的事情:
UPDATE table_name SET usernamecolumn = emailaddresscolumn
但由于我完全不知道自己在做什么,所以我想我应该先在这里问一下!
最佳答案
您的尝试是正确的。
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;
关于mysql - SQL : Update column (username) with content from another column in same table (email address),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727853/