帮我看看这个问题。为什么sql语句这样写提示无效的SQL语句呢?(35分)

  • 主题发起人 delphiere
  • 开始时间
D

delphiere

Unregistered / Unconfirmed
GUEST, unregistred user!
在if exists这里出了问题。sql语句的exists可不可以这样用的呀!
with adoquery7 do
begin
close;
sql.Clear;
sql.Add('if exists(select * form a,b where b.rjmc=a.rjmc) then');
sql.Add('insert into b(xs,rjmc) select xs, rjmc from a where xs='''+dbedit1.text+'''');
//这句意思是想,从B表中查找与A表有没有相同名称的记录,没有就从A中向B插入新的记录。
execsql;
 
这不需要用两个SQL啊,你就用一条直接往B插入新记录,如果你的条件是空的,也无所谓
啊。插入空的没有任何影响。
 
Sql里没有if这样的语句。可以将整个sql语句这样改一下看看:
'insert into b(xs,rjmc) select xs,rjmc from a where xs='''+dbedit1.text
+''' and exists (select * fro a,b where b.rjmc=a.rjmc';
 
哈哈,老弟把PASCAL和SQL 结合过头了
去掉“then”
 
多了一个分号
 
大家好,我的语句
sql.Add('if exists(select * form a,b where b.rjmc=a.rjmc) then');
sql.Add('insert into b(xs,rjmc) select xs, rjmc from a where xs='''+dbedit1.text+'''');
//这句意思是想,从B表中查找与A表有没有相同名称的记录,没有就从A中向B插入新的记录。

按照上面第二位朋友的方法可以修改一下,但是问题是,如果A为中有同一名称记录,要累加到
B表的同一名称的记录下面。那这个该如何判断呢?如果里面可以加入if else就容易多了。
execsql
 
多人接受答案了。
 
顶部