sqldf - 选择嵌套在另一个选择中不起作用

时间:2013-05-30 09:54:44

标签: r sqldf

我正在使用R中的sqldf包。我想创建一个数据集,其学生的ID被排除在另一个数据集之外。我的代码如下:

delete <- sqldf("select distinct ID from A where ...") 
B<-sqldf("select * from A where ID not in ('select ID from delete')")

运行代码后,我发现B与A完全相同。似乎sqldf没有识别嵌套的select语句。 任何建议将不胜感激!

1 个答案:

答案 0 :(得分:3)

代码存在以下问题:

  1. 在显示的代码中实际上没有嵌套选择。该语句请求所有不等于字符串'select ID from delete'的ID。删除引号。

  2. delete是一个SQLite关键字。要么为data.frame使用不同的名称,要么在SQL语句中将名称delete放在引号中,以便它不会将其视为关键字。

  3. 下次请以可复制的形式说明问题。请参阅How to make a great R reproducible example?

  4. 进行这三项更改后,我们有以下内容,其中A的ID为1,2,3,4,删除的ID为1,2,B的ID为3,4。

    library(sqldf)    
    A <- data.frame(ID = c(1, 1, 2, 3, 4))
    
    delete <- sqldf("select distinct ID from A where ID < 3")
    B <- sqldf("select * from A where ID not in (select ID from 'delete')")