不等于不过滤掉任何东西
Where not equals not filtering anything out
我试图通过在 PROC SQL 中使用 WHERE <> 从 table 中过滤掉某些值。查询运行没有错误,但实际上并没有过滤掉任何东西。
ID Category Sub_Category
1 Food Vegetables
2 Food Chicken
3 Appliance Mixer
我的代码如下所示:
PROC SQL;
CREATE TABLE APPLIANCE AS
SELECT * FROM GENERAL_TABLE
WHERE Sub_Category <> "Chicken"
OR Sub_Category <> "Vegetables";
RUN;
我知道我可以将 where 语句切换为 WHERE = "Mixer" 但我想了解为什么 WHERE <> 没有过滤掉任何东西。
您需要 AND
而不是 OR
。
OR
表示如果至少有一个条件为真,那么它将显示该行。由于这些条件之一将始终为真,因此它将显示所有行。
而不是 <>
和 OR
,使用 IN
或 NOT IN
PROC SQL;
CREATE TABLE APPLIANCE AS
SELECT * FROM GENERAL_TABLE
WHERE Sub_Category not in ("Chicken", "Vegetables");
RUN;
我试图通过在 PROC SQL 中使用 WHERE <> 从 table 中过滤掉某些值。查询运行没有错误,但实际上并没有过滤掉任何东西。
ID Category Sub_Category
1 Food Vegetables
2 Food Chicken
3 Appliance Mixer
我的代码如下所示:
PROC SQL;
CREATE TABLE APPLIANCE AS
SELECT * FROM GENERAL_TABLE
WHERE Sub_Category <> "Chicken"
OR Sub_Category <> "Vegetables";
RUN;
我知道我可以将 where 语句切换为 WHERE = "Mixer" 但我想了解为什么 WHERE <> 没有过滤掉任何东西。
您需要 AND
而不是 OR
。
OR
表示如果至少有一个条件为真,那么它将显示该行。由于这些条件之一将始终为真,因此它将显示所有行。
而不是 <>
和 OR
,使用 IN
或 NOT IN
PROC SQL;
CREATE TABLE APPLIANCE AS
SELECT * FROM GENERAL_TABLE
WHERE Sub_Category not in ("Chicken", "Vegetables");
RUN;