我有两个表 t1 和 t2。t1 具有重复值。我需要将所有记录从 t1 插入到 t2,但我不希望在 t2 中出现重复。我尝试了以下命令,在我看来它是正确的,并且在我运行它时没有语法错误,但问题是它的效果为 0。t2 中没有插入来自 t1 的记录。
insert into test.t2 (name2)
select name1 from test.t1 where NOT EXISTS (select name2 from test.t2);
有人可以帮忙吗?
我有两个表 t1 和 t2。t1 具有重复值。我需要将所有记录从 t1 插入到 t2,但我不希望在 t2 中出现重复。我尝试了以下命令,在我看来它是正确的,并且在我运行它时没有语法错误,但问题是它的效果为 0。t2 中没有插入来自 t1 的记录。
insert into test.t2 (name2)
select name1 from test.t1 where NOT EXISTS (select name2 from test.t2);
有人可以帮忙吗?
insert into test.t2(name2)
select distinct name1 from test.t1 where name1 NOT IN(select name2 from test.t2);
或者
insert into test.t2(name2)
select distinct name1 from test.t1 t1 where NOT EXISTS(select name2 from test.t2 t2 where t1.name1=t2.name2);
您可以创建一个唯一索引(一列或多列),然后使用 MySQL 替换命令。
CREATE UNIQUE INDEX unique_name2 ON t2 (name2);
REPLACE INTO t2 (name2) values ($name1);
...
您在这里有两种选择,一种是不复制插入上的数据,第二种是在插入时忽略重复项。
要从SELECT
通话中删除重复数据,您可以使用 `DISTINCT:
INSERT INTO test.t2 (name2) SELECT name1 FROM test.t1 WHERE name1 NOT IN (SELECT name2 FROM test.t2)
您还可以UNIQUE
首先添加索引来避免此问题:
ALTER TABLE t2 ADD UNIQUE INDEX index_name2 (name2)
请注意,如果 中已经存在重复数据,您将收到错误消息t2
,因此您可能需要事先对其进行清理。
然后您可以使用以下IGNORE
选项添加数据:
INSERT IGNORE INTO test.t2 (name2) SELECT name1 FROM TEST.t1
唯一索引方法将保证唯一性。
我需要将数据从用户插入到另一个用户,并且在编写此语句时......
insert into trep12.jobhead
select
*
from
wsfin04.jobhead
where
wsfin04.jobhead.job_no not in (select job_no from trep12.jobhead)
and wsfin04.jobhead.CHASS_NO not in (select CHASS_NO from trep12.jobhead)
and rdate between '01-jul-15'
and '01-oct-15'
and job_type = 1;
..... 结果是创建了 0 行。
这应该这样做:
INSERT IGNORE INTO test.t2 SELECT name2 FROM test.t1
从一个表中选择并插入到另一个表中。