2014-10-28 78 views
0

我在R中使用PostgreSQL並嘗試使用IN運算符,但它不起作用。 所有連接都在工作(同時指定了對象con,問題在查詢中)。R + PostgreSQL - IN運算符

我有以下代碼。

COLUMNS <- function(){c("A","B","C")} 
DEALS <- function(){c("DealA","DealB","DealC")} 
TABLE <- "TABLE_NAME" 

QUERY_DEALS <- sqlQuery(con, paste(
"SELECT", paste0("\"", COLUMNS(),"\"",sep="",collapse=","), 
"FROM", TABLE, 
"WHERE \"dealname\" IN ", paste0("\"",DEALS(),sep="",collapse=","))) 

它返回以下錯誤。

42601 7 ERROR: syntax error at or near ""DealA""; 
Error while executing the query 

我期待在DEALS函數中指定的交易列(來自COLUMNS函數)。有人能幫我嗎?提前致謝。

最好的問候,羅伯特

+0

您是否忘記了'WHERE \ d'中的'''?如果它是一個拼寫錯誤,您的結果SQL查詢字符串在'IN'包含圓括號後沒有值:http://www.postgresqltutorial。 com/postgresql-in/ – hrbrmstr 2014-10-28 11:57:45

+0

這是一個錯字,現在我改了它 「WHERE \」dealname \「IN」,paste0 ...是正確的 – 2014-10-28 12:03:34

+1

然後,你需要做的就是添加括號作爲我建議並鏈接到了 – hrbrmstr 2014-10-28 12:04:12

回答

0
"SELECT", paste0("\"", COLUMNS(),"\"",sep="",collapse=","), 
"FROM", TABLE, 
"WHERE \"dealname\" IN (", paste0("\"",DEALS(),sep="",collapse=","),")")) 

是正確答案爲@hrbrmstr指出。

+1

FWIW您應該避免以這種方式編寫查詢,太難讀了,'sprintf'是你的朋友。 – 2014-10-28 13:32:32