我正在用VB.NET将很多FOXPRO / FOXWEB文件转换为ASP.NET。底层数据库将保留FOXPRO(暂时)。
在两个不同的数据库中给出两个共享一个公共字段的表。 假设第一个表是“table1”,第二个表是“table2”,公共字段的名称是“cid”
假设我使用oledb从table1中提取一个名为“interestingrows”的oledb表,使用一行代码:
adapter.Fill(MyDataSet, "interestingrows")
我想说点什么
sql = "DELETE FROM interestingrows WHERE cid in (SELECT cid FROM TABLE2)"
...除了sql cmd被发送到我的适配器,它连接到foxpro数据库,“interestingrows”是一个oledb表。
如果解决方案在我们最终决定将底层数据库切换到MS SQL(或任何客户决定)时,这将是非常好的,但并非绝对必要。
答案 0 :(得分:1)
根据您的评论反馈,您可能希望创建一个SECONDARY“连接”,指向两个表的公共根文件夹...否则,我希望您的查询会因为尝试从一个位置获取访问权限而失败当前的连接是...它可能会让你失望。因此,使用新的根连接路径,您的查询可以在一个查询中引用路径和表...类似于......
C:\Somewhere\CommonPath\
C:\Somewhere\CommonPath\PrimaryData\
C:\Somewhere\CommonPaht\AlternateData\
并且您当前的连接将
C:\Somewhere\CommonPath\PrimaryData\
创建一个指向
的SECONDARY连接C:\Somewhere\CommonPath\
然后您的查询可能类似
delete from PrimaryData\Table1
where cid in ( select cid from AlternateData\Table2 );
答案 1 :(得分:0)
如何直接向基础表发出SQL命令?
DELETE FROM Table1 WHERE cid in (SELECT cid FROM Table2)