2014-10-28 79 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