mysql - SQL : Update column (username) with content from another column in same table (email address)

标签 mysql wordpress

我需要更新 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;

enter image description here

enter image description here

[DEMO]

关于mysql - SQL : Update column (username) with content from another column in same table (email address),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727853/

相关文章:

php - 重定向到主页的 Wordpress 作者 URL

css - WordPress:如何将 CSS 类添加到由以下代码生成的菜单链接

MySQL:更新字段不起作用

mysql - postgres - 修改 xml(MySql UpdateXml 替代)

php - 如果 woocommerce 订单包含特定产品类别的商品,则发送电子邮件

css - 网站页脚下方的随机空间

css - 页面标题的字体在 Windows 和 Linux 浏览器中显示不同

mysql - 将 SQL Google 搜索与自己的 SQL 查询相结合

MySQL 计数出现但返回所有行

php - 使用 PHP 从 SQL 数据库传递选择值