mysql - 对多个表使用 REPLACE INTO

标签 mysql sql

我正在使用 REPLACE 查询将一个表的内容替换为另一个表的内容。 这是我的表格:

table_one

  • ID
  • 姓名

table_two

  • ID
  • 名字
  • 我的名字

这是我当前使用的查询:

REPLACE INTO tbl_two (id, fname)
SELECT id, name FROM tbl_one

如何才能使 lname 字段中的现有值不会变为 NULL

最佳答案

好吧,当找到现有行(由 PK 或 UNIQUE 标识)时,REPLACE INTO 将删除并重新创建行

你可能更愿意使用

INSERT INTO...
ON DUPLICATE KEY UPDATE

INSERT INTO tbl_two (id, fname)
SELECT t.id, t.name FROM tbl_one t
ON DUPLICATE KEY UPDATE id = t.id, fname = t.name

参见SqlFiddle

关于mysql - 对多个表使用 REPLACE INTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436851/

相关文章:

.net - 使用 Dapper ORM SELECT * FROM X WHERE id IN (...)

mysql - 如何最好地重新计算分组依据值

php - 包含非 ASCII 字符的字符串会被 PHP/MySQL 截断

php - 使用 mysql 数据并放入下拉列表中

mysql - 如何使用 IF() 条件在 MySQL 中显示 true 和 false 行

sql - 使用 SQL Server 的 GOTO 进行错误处理是不好的做法吗?

mysql - 如何区分异常

mysql - 在每个表中搜索多个列名,并返回表名

sql - Laravel Eloquent 选择 CASE?

mysql - 自动递增和顺序