mysql INSERT IF NOT EXISTS 实用示例
mysql INSERT IF NOT EXISTS practical sample
我整天都在尝试,但没有任何运气。我想写一个 MySQL 例程(查询)来用另一个 table 的数据填充一个 table。
两个 table 都有唯一的、非空的和主键(列名)并且两个 table 都有(列代码)。
如何在不更新现有数据的情况下将数据从一个 table 复制到另一个?我想忽略 tables.
中存在的行
导出(名称PK)
没有
姓名
值
代码
1
慈悲
100
119001
2
奥利奥
50
232221
3
果冻
70
331000
4
太阳能
55
411411
----
------
--------
--------
tb_code(姓名PK)
姓名
代码
太阳能
411411
------
--------
INSERT INTO tb_code (name, code) FROM export (SELECT name, code) WHERE NOT EXISTS
结果应该是
tb_code(姓名PK)
姓名
代码
太阳能
411411
慈悲
119001
奥利奥
232221
果冻
331000
------
--------
你的语法有问题...
INSERT ... SELECT ... FROM ...
不是 INSERT ... FROM ...
(没有 SELECT
),export
之后的 FROM
-less SELECT
子查询完全错位并且EXISTS
运算符需要一个子查询作为操作数——检查其存在(即非空)的集合。
尝试:
INSERT INTO tb_code
(name,
code)
SELECT e.name,
e.code
FROM export e
WHERE NOT EXISTS (SELECT *
FROM tb_code c
WHERE c.name = e.name);
您通常有正确的想法,但可能应该花更多时间研究正确语法的文档。
我整天都在尝试,但没有任何运气。我想写一个 MySQL 例程(查询)来用另一个 table 的数据填充一个 table。 两个 table 都有唯一的、非空的和主键(列名)并且两个 table 都有(列代码)。 如何在不更新现有数据的情况下将数据从一个 table 复制到另一个?我想忽略 tables.
中存在的行导出(名称PK)
没有 | 姓名 | 值 | 代码 |
---|---|---|---|
1 | 慈悲 | 100 | 119001 |
2 | 奥利奥 | 50 | 232221 |
3 | 果冻 | 70 | 331000 |
4 | 太阳能 | 55 | 411411 |
---- | ------ | -------- | -------- |
tb_code(姓名PK)
姓名 | 代码 |
---|---|
太阳能 | 411411 |
------ | -------- |
INSERT INTO tb_code (name, code) FROM export (SELECT name, code) WHERE NOT EXISTS
结果应该是
tb_code(姓名PK)
姓名 | 代码 |
---|---|
太阳能 | 411411 |
慈悲 | 119001 |
奥利奥 | 232221 |
果冻 | 331000 |
------ | -------- |
你的语法有问题...
INSERT ... SELECT ... FROM ...
不是 INSERT ... FROM ...
(没有 SELECT
),export
之后的 FROM
-less SELECT
子查询完全错位并且EXISTS
运算符需要一个子查询作为操作数——检查其存在(即非空)的集合。
尝试:
INSERT INTO tb_code
(name,
code)
SELECT e.name,
e.code
FROM export e
WHERE NOT EXISTS (SELECT *
FROM tb_code c
WHERE c.name = e.name);
您通常有正确的想法,但可能应该花更多时间研究正确语法的文档。