重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、先添加完,删除所有重复的记录,再insert一次
为古田等地区用户提供了全套网页设计制作服务,及古田网站建设行业解决方案。主营业务为成都网站建设、网站制作、古田网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
insert into A select * from B;
insert into A select * from C;
insert into A select * from D;
2、删除重复的记录只保留一行
delete from A where name in (select id from t1 group by id having count(id) 1)and rowid not in (select min(rowid) from t1 group by id having
count(*)1);
3、记录一下这些重复的记录,
mysql -uroot -p123456 -Ddb01 -e 'select b.id from t1 b group by id having count(b.id) 1' | tail -n +2 repeat.txt
删除全部重复的记录
delete from A where name in (select name from t1 group by name having count(name) 1;);
再次插入多删的重复记录
#!/bin/sh
for id1 in `cat repeat.txt`;do
mysql -uroot -p123456 -Ddb01 -e "insert into A select * from B where id='${id1}'"
done
在数据库中创建存储过程,比如存储过程的名字叫做 test
在java中和正常使用sql的方法一样, sql = "call test(B1,B2)", B1和B2是假设你将要插入b表中的数据
假设b表的结构是(ID int auto_incremet, B1 int, B2 int)
假设a表的结构是(ID int)
CREATE test(B1 int, B2 int) #假设A1和A2是将要插入b表中的数据
BEGIN
declare new_id as int; #声明自增长所添加的ID
insert into b(B1,B2) values(B1,B2); #给b插入新的记录
select last_insert_id() into new_id; #取得新插入记录的ID
insert into a(ID) values(new_id); #把新插入的ID写入a表
select new_id; #如果需要的话存储过程返回新得到的ID给客户端
END
注意: 为什么推荐使用存储过程,而不是直接在java程序中使用select last_insert_id(); 因为这个函数是打开当前端口时,返回最后一个插入的自增长的ID, 如果不用存储过程,可能当前链接关闭,或有其他的应用也在其他有自增长ID的表中插入新的记录, 这时你取回的ID就是错误的。
在一个已存在的表中,可以方便的添加新字段而不影响原有数据。相对而言,想从有数据的表中删除数据,就需要很慎重,以免影响其他使用该表的程序或项目。
添加新字段的SQL语法:
ALTER TABLE tbl_name ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
比如:
Alter table A add A4 int(11) NOT NULL default 0 after A3;
有问题就继续问,满意请采纳。