Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将替换为多个表_Mysql_Sql - Fatal编程技术网

Mysql 将替换为多个表

Mysql 将替换为多个表,mysql,sql,Mysql,Sql,我使用REPLACE查询将一个表的内容替换为另一个表的内容。 这是我的桌子: 表1 身份证 名字 表二 身份证 fname 名字 以下是我当前使用的查询: REPLACE INTO tbl_two (id, fname) SELECT id, name FROM tbl_one 如何做才能使lname字段中的现有值不会变为NULL?那么,当找到现有行(由PK或UNIQUE标识)时,REPLACE INTO将删除并重新创建一行 你可以用 INSERT INTO... ON DUPLICA

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

表1

  • 身份证
  • 名字
表二

  • 身份证
  • fname
  • 名字
以下是我当前使用的查询:

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
请参见您可以使用的

替换为表2(id、fname、Lname) 从表1中选择id、fname“”

请尝试使用以下脚本

创建一个表( ID INT不为空, fname VARCHAR(20)不为空, 主键(ID) );

创建表2( ID INT不为空, fname VARCHAR(20)不为空, Lname VARCHAR(20)不为空, 主键(ID) );


试试上面的sql查询。ISNULL函数转换“”中的null值(空白)。

粗略地说,REPLACE的记录行为是插入(如果目标中不存在主键),或者删除并插入

如果目标中存在主键,则该行将被删除,REPLACE语句的作用类似于sqlinsert语句。因此,新行中的所有值必须由a)REPLACE语句提供,或b)表定义中的默认值提供

如果希望保留一些旧值,则必须从目标表中选择它们,并将这些值作为REPLACE语句的一部分提供


插入。。。在重复密钥更新时
可能是更好的选择。

替换为!=插入。OP希望更新现有值并插入不存在的值。
INSERT INTO tbl_two (id, fname)
SELECT id, ISNULL(name,'') FROM tbl_one