从查询中排除记录,其中某些列都不等于值

时间:2015-05-27 11:18:27

标签: sql ms-access-2010

我对ACCESS 2010和SQL相对较新。找出这个有点麻烦。

我有一个从表中返回结果的查询。我想排除列A1-A4中的值都等于零的任何记录。

例如:

+----+----------+----+----+----+----+
| ID | CustName | A1 | A2 | A3 | A4 |
+----+----------+----+----+----+----+
|  1 | Ben      |  0 |  0 |  0 |  0 |
|  2 | Tom      |  0 |  0 |  0 |  1 |
|  3 | Jerry    |  0 |  0 |  2 |  0 |
|  4 | Steve    |  0 |  3 |  0 |  0 |
|  5 | Dave     |  4 |  0 |  0 |  0 |
|  6 | Mike     |  0 |  0 |  2 |  1 |
|  7 | Sheila   |  0 |  3 |  2 |  1 |
|  8 | Jonesy   |  4 |  3 |  2 |  1 |
+----+----------+----+----+----+----+

使用上面的表作为查询的来源,我想要排除的唯一记录应该是第一条记录。

我用于此查询的SQL是

SELECT Test.CustName, Test.A1, Test.A2, Test.A3, Test.A4
FROM Test
WHERE (((Test.A1)<>0) AND ((Test.A2)<>0) AND ((Test.A3)<>0) AND ((Test.A4)<>0));

此SQL将仅返回A1-A4中的所有列不等于零且仅返回最终记录的记录。它应该返回记录2 - 7.

3 个答案:

答案 0 :(得分:1)

您需要OR,而不是AND

SELECT Test.CustName, Test.A1, Test.A2, Test.A3, Test.A4
FROM Test
WHERE (((Test.A1)<>0) OR ((Test.A2)<>0) OR ((Test.A3)<>0) OR ((Test.A4)<>0));

答案 1 :(得分:0)

使用OR

SELECT t.CustName, t.A1, t.A2, t.A3, t.A4
FROM Test t
WHERE (((t.A1)!=0) 
OR ((t.A2)!=0)
OR ((t.A3)!=0) 
OR ((t.A4)!=0));

答案 2 :(得分:0)

如果这些值不是负值,您也可以

where A1+A2+A3+A3 > 0