好的继承我的场景 - 我想查询本地数据库并将GUID选择查询的结果存储到数组中。
然后我想查询远程服务器以返回显示基本上任何新记录的结果集
这是查询,但显然这只适用于同一台服务器。
SELECT *
FROM remotetable remote
WHERE NOT EXISTS
(
SELECT 1
FROM localtable local
WHERE local.guid = remote.guid
)
并将此查询的结果插入到我的本地数据库中以进行合并。
所以它会像
ArrayList myArrayList = new ArrayList();
OdbcConnection local = new OdbcConnection("DSN=local");
local.Open();
OdbcCommand guidSelect = new OdbcCommand("SELECT GUID from localtable",local);
OdbcDataReader DbReader = guidSelect.ExecuteReader();
while (DbReader.Read())
{
String guid = (string)DbReader[0];
myArrayList.Add(guid);
}
local.Close();
OdbcConnection local = new OdbcConnection("DSN=remote");
"SELECT * FROM remotetable remote WHERE NOT EXISTS (SELECT 1 FROM"+ myArrayList() +" local WHERE local.guid = remote.guid)
显然这不会按原样运作,但它应该概括一下id想要完成什么
提前感谢:)
答案 0 :(得分:1)
我知道如何做到这一点的唯一方法是实际传递Guids表,如下所示:
string guids = "''" + string.Join("'',''", myArrayList) + "''";
string query = string.format("SELECT * FROM remotetable WHERE NOT id IN ({0})", guids);
在我看来,如果您正在尝试跟踪新记录,您应该只添加一个连续列,然后只获取高于本地该列的MAX的所有内容。