Код SQL, который вы передаете во втором аргументе dbGetQuery
, представляет собой просто текстовую строку, следовательно, вы можете сконструировать это, используя paste
или эквиваленты.
Вам нужно что-то вроде следующего:
in_clause <- paste0("('", paste0(pii$PII_ID, collapse = "', '"), "')")
sql_text <- paste0("SELECT ARTICLE_ID
FROM JRBI_OWNER.JRBI_ARTICLE_DIM
WHERE PII_ID IN ", in_clause)
data <- dbGetQuery(jdbcConnection, sql_text)
Однако точная форма первого paste0
зависит от формата PII_ID
(я предположил, что это текст) и от того, как этот формат представлен в sql (я принял одинарные кавычки).
Убедитесь, что sql_text
проверен действительный SQL перед передачей его на dbGetQuery
.
ВАЖНО: Этот подход подходит, только если pii
содержит небольшое количество значений (я рекомендуюменее 10).Если pii
содержит большое количество значений, ваш запрос будет очень большим и будет выполняться очень медленно.Если у вас есть много значений в pii
, то лучшим вариантом будет соединение или полусоединение согласно комментарию @ nicola.