Mysql 将替换为多个表
我使用REPLACE查询将一个表的内容替换为另一个表的内容。 这是我的桌子: 表1Mysql 将替换为多个表,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
- 身份证
- 名字
- 身份证
- 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