这就是我所拥有的:
1 MySQL db with 2 schemas
- schema 1
- schema 2它们都有一个名为files的表,
with 3 fields
- Name
- Play
- Date这两个模式都具有名称filed populated和schema 1 has Play and Date populated..
我希望将所有记录或播放和日期导入到名称与方案1相同的方案2中。
所以
Schema 1
- Name = A
- Play = 1
- Date = 25/06/17
Schema 2
- Name = A
- Play =
- Date =我希望将Play和Date插入到模式2中,其中名称与两个数据库中的名称匹配。
我有个疑问-
INSERT INTO schema2.test (Play, Date)
SELECT Play, Date FROM schema1.test;我算不出where从句。
发布于 2017-06-25 19:38:00
看起来您想从一个表更新另一个表:
update schema2.files f2 join
schema1.files f1
on f2.name = f1.name
set f2.play = f1.play,
f2.date = f1.date;为了提高性能,您需要在schema1.files(name)上建立索引。。。或者更好的是,schema1.files(name, play, date)。
这里假设name在两个表中是唯一的--标识每一行。如果这不是真的,我会建议一种非常不同的方法。将名称存储在单独的表中,然后截断schema2.files并将新记录插入:
create table schema2.temp_names as
select distinct name
from schema2.files;
truncate table schema2.files;
insert into schema2.files(name, play, date)
select f1.name, f1.play, f1.date
from schema1.files f1
where f1.name in (select n.name from schema2.temp_names n);
drop table schema2.temp_names; -- if you want实际上,如果您的表很大,这种方法通常会有更好的性能。
发布于 2017-06-25 19:36:38
UPDATE
schema2.test T2
INNER JOIN schema1.test T1 ON T1.Name=T2.Name
Set T2.Play=T1.Play,T2.Date=T1.Date在这里,您不需要在模式2中插入记录,因为已经有名为列的记录。
因此,您必须使用Schema1特定记录来更新记录,而不是插入
试一试上面的代码。希望这能对你有所帮助。
发布于 2017-06-25 19:39:20
您可以使用更新
update database2.files t_dest
inner join database1.files t_orig on t.dest.name = t_orig.name
set t_dest.play = t_orig.play,
t_dest.date = t_orig.date和插入select
insert into database2.files ( Name, Play, Date)
select Name, Play, Date
from database1.files
inner join database2.files
where database1.name <> database2.namehttps://stackoverflow.com/questions/44745882
复制相似问题