有表table1,表table2两张,table1包含table2所有字段,例如:table1{field1,field2,field3,field4,id,requestid},table2{field1,field2,field3,field4,id} 现在我需要写一个sql,如果table1的id在table2中存在的时候,则table2的字段的值为table1.field1+table2.field1,table1.field2+table2.field2...若不存在,则在table2中插入一条新数据,值为table1相应的字段值 写的比较复杂,其实目的很简单,两张表,表一在表二中存在则执行update表二,否则insert入表二。 需要用sql解决,求大虾们帮帮,急!
解决方案 »
- XFire 和spring结合,配置ServiceBean参数问题
- 用xfire写的webservice本地测试能通过 部署到别的机子上 调用其就会抱如下错误,求教,急
- JSP解析xml的空指针异常
- Java中如何实现文件读写,请指教,谢谢
- JavaScript 导出 Word
- j2ee环境下同步file和DB数据的transaction问题
- Struts2的标签 <s:select> 的问题
- 新手关于spring的一个异常,求助啊!!!
- hibernate能和IDEA集成嘛?
- springboot项目打包用的是jar方式,放到linux服务器上传图片操作有毛病,怎么解决啊,大神们
- 这个代码是否有用到设计模式
- Itext操作Word页眉页脚的问题,分不多了,捧捧场吧。
第二部分,查找table1中id,不存在于table2的数据,将结果作为数据insert into table2.
现在关键的是,怎样填对应的值进去,因为你已经得到了相应的id的值了。当id相同时即id在r2[]中存在时,你需要用"select * from table1 where id="+id;得到rs3,用"select * from table2 where id="+id得到rs4,这时你就可以取相应字段的值相加了。当不同时,很显然,你只需要用"select * from table1 where id="+id;得到rs3,然后去处相应字段的值insert 进去就好了。
一般也就是executeQuery出结果将结果同时insert\update进表格。
@field1 INT,
@field2 INT,
@field3 INT,
@field4 INT,
@id INT
)
AS
BEGIN
IF EXISTS (SELECT ID FROM TABLE2 WHERE id = @id)
BEGIN
UPDATE TABLE2 SET field1 = @field1 + field1, field2 = @field2 + field2, field3 = @field3 + field3, field4 = @field4 + field4
WHERE id = @id
END ELSE
INSERT INTO TABLE2 (field1, field2, field3, field4, id)
VALUES (@field1, @field2, @field3, @field4, @id)
BEGIN
END
END
GO
CREATE PROCEDURE PROCE(
@field1 INT,
@field2 INT,
@field3 INT,
@field4 INT,
@id INT
)
AS
BEGIN
IF EXISTS (SELECT ID FROM TABLE2 WHERE id = @id)
BEGIN
UPDATE TABLE2 SET field1 = @field1 + field1, field2 = @field2 + field2, field3 = @field3 + field3, field4 = @field4 + field4
WHERE id = @id
END ELSE
INSERT INTO TABLE2 (field1, field2, field3, field4, id)
VALUES (@field1, @field2, @field3, @field4, @id)
BEGIN
END
END
GO
这样我不知道怎么写了, 你可以先调用一个查找 id 是否在 table2 中的方法, 然后再判断是 update 还是insert
有时候一条SQL语句不见得是好事