我熟悉 sql 中的“IN”子句,例如
select * from table1 where myfield in (select myfield from table2)
我现在在两个数据库之间!我想从另一个数据库中选择电话位于其他记录集中的记录集。我不直接使用 sql server。您可能会建议我使用服务器端语言的更复杂的方法,例如php 或 asp 等
我在classic asp中的测试(其中connectionObject1连接到第一个数据库,connectionObject2连接到第二个数据库):
sql="select phone from persons"
recordset1.open sql,connectionObject1
sql="select * from persons where phone in ("& recordset1 &")"
recordset2.open sql,connectionObject2
Microsoft VBScript 运行时错误“800a000d”
类型不匹配
您的错误在这里:
sql="select * from persons where phone in ("& recordset1 &")"
您正在尝试连接字符串,但是
recordset1
顾名思义是一个记录集,而不是字符串。
我刚刚查了一下这个。您应该能够使用
GetString
将记录集转换为字符串:
sql = "select * from persons where phone in (" &
recordset1.GetString(adClipString, -1, ",", ",") &
")"
如果电话不是数字,您需要额外的引号:
sql = "select * from persons where phone in (" &
"'" &
recordset1.GetString(adClipString, -1, "','", "','") &
"'" &
")"
我的语法可能有误。在这种情况下,请查阅您的文档。
在 SQL 中使用完全限定的对象名称,这应该可行:
sql="select * from [DB1Name].[SchemaName].persons where phone in (select phone from [DB2Name].[SchemaName].persons)"