Я знаком с предложением «IN» в SQL, например.
select * from table1 where myfield in (select myfield from table2)
Я сейчас между двумя базами данных! Я хочу выбрать набор записей, где телефон находится в другой записи из другой базы данных. Я не работаю напрямую с сервером SQL. Вы можете предложить мне более сложный метод с использованием языка на стороне сервера, например php или 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)"