选择一个表并按一列中的多个值以及另一列中的值进行过滤

时间:2016-01-01 18:30:06

标签: sql r sqldf

我正在尝试查询表格,以便

表1

x   y   z
gg  1   E
ll  1   E
ff  2   NA
ee  2   E  
rr  3   E
ww  3   NA

查询只返回y列中1和2的行,这些行在列z中没有“NA”字符串,如下所示:

x   y   z
gg  1   E
ll  1   E
ee  2   E  

我尝试过这样的事情:

SELECT * FROM table1 WHERE (((y = 1) OR (y = 2)) AND (z <> "NA"));

我也尝试过:

SELECT * FROM table1 WHERE y IN (1,2) AND (z <> "NA");

这些都不起作用。

2 个答案:

答案 0 :(得分:4)

尝试此SQL查询。我认为你的z列可能包含额外的空格。

SELECT * FROM Table1 AS T
WHERE T.y IN(1,2)
          AND T.z NOT LIKE '%NA%'

答案 1 :(得分:2)

不是答案,只是为了测试,下面在R中工作正常。

#dummy data
table1 <- read.table(text = "
  x   y   z
gg  1   E
ll  1   E
ff  2   NA
ee  2   E  
rr  3   E
ww  3   NA", header = TRUE)

library(sqldf)

#testing
sqldf('SELECT * FROM table1 WHERE (((y = 1) OR (y = 2)) AND (z <> "NA"))')
sqldf('SELECT * FROM table1 WHERE y IN (1,2) AND (z <> "NA")')

#output
#    x y z
# 1 gg 1 E
# 2 ll 1 E
# 3 ee 2 E