选择 table 并按一列中的多个值以及另一列中的值进行过滤
Selecting a table and filtering by several values from one column as well as a value from another
我正在尝试查询 table 以便 if
table1:
x y z
gg 1 E
ll 1 E
ff 2 NA
ee 2 E
rr 3 E
ww 3 NA
查询 returns 仅那些在 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");
None 其中有效。
试试这个 SQL 查询。我认为您的 z 列可能包含额外的空格。
SELECT * FROM Table1 AS T
WHERE T.y IN(1,2)
AND T.z NOT LIKE '%NA%'
不是答案,只是为了测试,下面在 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
我正在尝试查询 table 以便 if
table1:
x y z
gg 1 E
ll 1 E
ff 2 NA
ee 2 E
rr 3 E
ww 3 NA
查询 returns 仅那些在 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");
None 其中有效。
试试这个 SQL 查询。我认为您的 z 列可能包含额外的空格。
SELECT * FROM Table1 AS T
WHERE T.y IN(1,2)
AND T.z NOT LIKE '%NA%'
不是答案,只是为了测试,下面在 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