sql 插入语句

来源:百度知道 编辑:UC知道 时间:2024/05/12 05:58:18
我想将a表中的数据插入到b表中,并且只插入那些b表中不存在的数据。
我这样写insert into b select * from a where not exists(select * from b),可是提示只查询不插入,应该怎么写啊?
如果这样写不行,那应该怎么写,比如说我想比较a表的c项和b表中的d项,应该如何写啊
如果去掉where就可以将数据插入b表,但是这样的话a表的数据就可以重复插入了,我想要数据不能重复插入!!

你要比较a和b中哪个字段?

你这样写肯定是不行的。
insert语句要values;而且not exists(select * from b)永远都是假的了

INSERT 语句的完整句法如下:

INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |

Values_list | select_statement}
说明:into 可以省略如insert tablename
insert into tablename(列名,...) values(列名值,...)列名和列名值要一一对应
insert into tablename select语句
你上面的语句有问题,你想如果在b中不存在,也就是说要向b中插入零个记录,你说是吗?

那不是说,插入到b中的a表中的每条记录都要与b表中的每条记录都要对比啊!你还是对a表中的记录进行判断吧!
另外,.不知道你用在哪里.在delphi中有一个简单的方法:如果是批量复制可以用Tbatchmove这个控件,而且可以选择复制模式.
希望可以帮到你!

在oracle 9i里可以用merge功能