SQL - 来自另一个数据库的另一个记录集中的列

问题描述 投票:0回答:2

我熟悉 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”

类型不匹配

c# asp.net sql-server asp-classic where-in
2个回答
2
投票

您的错误在这里:

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, "','", "','") &
        "'" &
      ")"

我的语法可能有误。在这种情况下,请查阅您的文档。


1
投票

在 SQL 中使用完全限定的对象名称,这应该可行:

sql="select * from [DB1Name].[SchemaName].persons where phone in (select phone from [DB2Name].[SchemaName].persons)"
© www.soinside.com 2019 - 2024. All rights reserved.