问题如标题所示,希望大家给个sql语句,其中主要是把A表中的link与title字段里的数据导入到B表中link字段与title字段中,不过当A表的数据有更新(是指数据增加),也能导入到B表中,但是之前导入到B表的数据不能再导入?在此静候佳音了!
其中的qq_url表:
create table A(
id int primary key auto_increment,
link varchar(255) not null,
title varchar(255) not null,
qq_top int default 0
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
而article表:
create table B(
id int primary key auto_increment,
link varchar(255) not null,
title varchar(255) not null,
qq_top int default 0
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
其中的qq_url表:
create table A(
id int primary key auto_increment,
link varchar(255) not null,
title varchar(255) not null,
qq_top int default 0
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
而article表:
create table B(
id int primary key auto_increment,
link varchar(255) not null,
title varchar(255) not null,
qq_top int default 0
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
select * from a
on duplicate key update b.link=a.link,b.title=a.title
建议在A表上建个触发器,当有数据插入的时候进行判断,把新插入A表而B表不存在的记录插入B表INSERT INTO B(link,title)
SELECT link,title FROM A WHERE NOT EXISTS(SELECT * FROM B where link=A.link and title=A.link)
INSERT INTO B(link,title)
SELECT link,title FROM A WHERE NOT EXISTS(SELECT * FROM B where link=A.link and title=A.title)写错了一个地方,这样应该没有问题的,我测试过
应该不会出错,如果记录存在则进行update, 你的出错信息是什么?
insert into article(article_title,article_link)
select title,link from qq_url
on duplicate key update article.article_link=qq_url.link,article.article_title=qq_url.title;
现在不知道每次都可以输入了,不过问题还是一样,每执行一次就把前一张表中所有数据都录入?我想要的效果是第一次是全录入,后面的录入则是在前一张表中有数据增加时才录入,当然录入的是前一张数据多出来的数据
你的意思是插入A表的数据即使有重复,在插入后也要插入B表?这样的话我就理解错了
用触发器吧CREATE TRIGGER tri_AtoB
AFTER INSERT
ON A
FOR EACH ROW
BEGIN
INSERT INTO B(link,title) SELECT link,title FROM NEW;
END;
不过如果A表重复数据,只是插入这两个字段到B没有任何意义,除非还有其他的字段,如ID或时间等不重复的信息