我要从一个表中读取name,tel等一些数据,写入另外一个表中,写的时候要判断name字段在在目标表中是否已经存在,如果存在则更新tel字段,如果不存在则写入整个记录,我是这么写的:sSql:='select db1.*,db2.name from db1,db2 where db1.name=db2.name';
With ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
//更新数据;
end;
end;sSql:='select db1.*,db2.name from db1,db2 where db1.name<>db2.name';
With ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
//插入数据;
end;
end;请问这样写符合不符合上面的要求
另外怎么写能提高效率谢谢!
With ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
//更新数据;
end;
end;sSql:='select db1.*,db2.name from db1,db2 where db1.name<>db2.name';
With ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
//插入数据;
end;
end;请问这样写符合不符合上面的要求
另外怎么写能提高效率谢谢!
解决方案 »
- 用dxDBTreeView1如何增加节点啊?
- 急! 百思不解问题!请高手指教
- 一个也许简单的问题
- 關於timer的interval問題
- 请问开发ISAPI的时候,怎么在动态网页里显示WORD文档(.doc)文件
- 李维书中WebService例子,为啥客户端有时报:Invalid Content type text/html,SOAP expect text/xml
- 在打开文件时总报错,怎样在打开文件前先释放掉文件?
- 如何将DFM文件转换成XML文件。
- 怎么把数据从一个表添加到另外一个
- 高手请进:动态Create控件,每打开一次占掉 1 M 多内存,简直当饭吃!!!
- 100分!!!问题只要能解决,值得!!! DateTimePicker 的问题。
- 高手进来帮个忙呀,一个关于DBGridEh增加一列显示行号的的功能,谢谢~~
DECLARE @T TABLE(NAME VARCHAR(10),TEL VARCHAR(20))
INSERT @T SELECT 'AA','345'
UNION ALL SELECT 'BB','123'
UNION ALL SELECT 'CC','897'
---TABLE2
DECLARE @T1 TABLE(NAME VARCHAR(10),TEL VARCHAR(20))
INSERT @T1 SELECT 'AA','345'
UNION ALL SELECT 'BB','345'
--判断存在时更新记录IF EXISTS
(SELECT 1 FROM @T A WHERE EXISTS(SELECT 1 FROM @T1 WHERE NAME=A.NAME))
UPDATE A
SET TEL=B.TEL
FROM @T1 A INNER JOIN @T B
ON A.NAME=B.NAME
--插入在table1中table2不存在
INSERT @T1
SELECT *
FROM @T A
WHERE NOT EXISTS
(SELECT 1 FROM @T1 WHERE A.NAME=NAME)
SELECT * FROM @T1