Mysql 在R粘贴函数中混合单引号和双引号?

Mysql 在R粘贴函数中混合单引号和双引号?,mysql,r,paste,double-quotes,rmysql,Mysql,R,Paste,Double Quotes,Rmysql,这看起来很可笑,但我就是做不好——非常感谢您的帮助 基本上:我使用RMySQL来执行一些简单的SQL,以便了解SQL是如何工作的。作为一个简单的例子,我想将几个SQLselect查询链接在一起。这在RMySQL PDF中有介绍,但其中的示例似乎是不正确的语法(,第3页,示例6) 如果我有三个问题,像这样说: q1 <- "SELECT db.table FROM table WHERE stuff = 'blah' " q2 <- "SELECT db.other_table FRO

这看起来很可笑,但我就是做不好——非常感谢您的帮助

基本上:我使用RMySQL来执行一些简单的SQL,以便了解SQL是如何工作的。作为一个简单的例子,我想将几个SQL
select
查询链接在一起。这在RMySQL PDF中有介绍,但其中的示例似乎是不正确的语法(,第3页,示例6)

如果我有三个问题,像这样说:

q1 <- "SELECT db.table FROM table WHERE stuff = 'blah' "
q2 <- "SELECT db.other_table FROM other_table WHERE stuff = 'different blah' "
q3 <- "SELECT db.table2 FROM table2 WHERE table2 = 1000"
结果是

> script
[1] "SELECT db.table FROM table WHERE stuff = 'blah' ;SELECT fb.other_table FROM
other_table WHERE stuff = 'different blah' ;SELECT db.table2 FROM table2 WHERE table2 =
'1000'
因此调用
dbSendQuery
显然是失败的

我尝试了
\”
,但这也不起作用:

q1 <- "SELECT db.table FROM table WHERE stuff = 'blah' \" "
q2 <- "SELECT db.other_table FROM other_table WHERE stuff = 'different blah' \""
q3 <- "SELECT db.table2 FROM table2 WHERE table2 = 1000 \" "

script <- paste(q1, q2, q3, sep=";")

> script
[1] "SELECT db.table FROM table WHERE stuff = 'blah' \" ;  ;SELECT db.other_table FROM
other_table WHERE stuff = 'different blah' \";SELECT db.table2 FROM table2 WHERE table2
= 1000 \" "
这大概是因为粘贴功能的结果应该是:

"SELECT db.table FROM table WHERE stuff = 'blah'" ;"SELECT fb.other_table FROM
other_table WHERE stuff = 'different blah'" ;"SELECT db.table2 FROM table2 WHERE table2
= '1000'"
每个查询都可以正常工作,因此我假设是我的
paste
命令导致了问题

编辑:为了简化此操作:假设我有两个字符串,如下所示:

script <- paste(q1, q2, q3, sep=";")
my.queries <- dbGetQuery(my.con, script, client.flag = CLIENT_MULTI_STATEMENTS)
t1 <- "the 'stuff'"
t2 <- "more 'stuff'"
paste(t1, t2, sep=";")
[1] "the 'stuff' ; more 'stuff' "

t1必须将参数
client.flag=client_MULTI_语句
传递给函数
dbConnection
,而不是
dgGetQuery

那么,您的第一种方法应该有效:

q1 <- "SELECT db.table FROM table WHERE stuff = 'blah' "
q2 <- "SELECT db.other_table FROM other_table WHERE stuff = 'different blah' "
q3 <- "SELECT db.table2 FROM table2 WHERE table2 = 1000"

script <- paste(q1, q2, q3, sep=";")

q1您的第一种方法似乎是正确的。有什么问题吗?谢谢Sven,我们已经做了一些澄清。您是否在参数
client.flag=client\u MULTI\u STATEMENTS
中使用了
dbConnection
?嗯,这很尴尬……我将
client.flag=client\u MULTI\u STATEMENTS
放在
dbGetQuery
调用中。。。非常感谢你帮我解决了我的愚蠢,斯文!
q1 <- "SELECT db.table FROM table WHERE stuff = 'blah' "
q2 <- "SELECT db.other_table FROM other_table WHERE stuff = 'different blah' "
q3 <- "SELECT db.table2 FROM table2 WHERE table2 = 1000"

script <- paste(q1, q2, q3, sep=";")