mysql - DBSQL 将列中一个实体的值插入到不同列中的另一个实体

标签 mysql

你们能告诉我这是否正确吗??我正在尝试将 firstname_1 的值插入 first_name。

INSERT INTO wp_usermeta(meta_value) where meta_key=first_name
select meta_value where meta_key=firstname_1

这是从数据库中查看的表(表名 = wp_usermeta)

423 16 firstname_1 vrigu
424 16 lastname_2 de
425 16 gender_5 male
426 16 bankname_3 SBI
427 16 accountnumber_4 9456874526
429 17 nickname mithu123
430 17 first_name
431 17 last_name

最佳答案

如果你想插入一个新行,你使用这个:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT user_id, 'first_name', meta_value
FROM wp_usermeta
WHERE meta_key = 'firstname_1'

如果要填充现有行,请使用 UPDATE,而不是 INSERT:

UPDATE wp_usermeta AS t1
JOIN wp_usermeta AS t2 ON t1.user_id = t2.user_id
SET t1.meta_value = t2.meta_value
WHERE t1.meta_key = 'first_name'
AND t2.meta_key = 'firstname_1'

如果您需要同时执行这两项操作——如果行已存在则更新该行,或者创建一个新行——您可以使用 INSERTON DUPLICATE KEY UPDATE选项:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT user_id, 'first_name', meta_value
FROM wp_usermeta
WHERE meta_key = 'firstname_1'
ON DUPLICATE KEY UPDATE meta_value = VALUES(meta_value);

这假设复合键上有一个唯一索引 (user_id, meta_key)

关于mysql - DBSQL 将列中一个实体的值插入到不同列中的另一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31753656/

相关文章:

sql - 查询问题 - 结果不正确

MySQL csv 导入增量减慢(替代方案?)

mysql - 在 MySQL 中查找缺失的选票

mysql like 查询获取 max like

java - 为什么 JPA/hibernate 不能映射到 MySQL blob 类型?

mysql - 如何使用子查询作为存储过程的一部分 MySQL

mysql - 为什么这个查询不选择任何行

mysql - 查询具有多个可能匹配值的字段的最快方法

MYSQL,查询以按条件分组获取字段中不同值的总和

php - 如何在 IN 中正确使用 CASE WHEN/THEN/ELSE?