Select 行,其中 column1、column2、column3 和 column4 != 1

Select rows where column1, column2, column3 and column4 != 1

我正在尝试制作一个网站,显示员工从客户那里得到的分数。数据看起来像这样

Name | wait|service |solution | total | date
joe     1     1          1        1      2018-09-01 00:00:00.000
joe     1     3          5        4      2018-09-02 00:00:00.000
joe     5     5          5        5      2018-09-03 00:00:00.000
joe     3     1          5        3      2018-09-04 00:00:00.000
joe     3     1          1        3      2018-09-05 00:00:00.000
joe     1     5          3        1      2018-09-06 00:00:00.000

我想弄清楚如何进行 select 查询以排除 wait、service、solution 和 total 为 1 的行。

起初我以为 where wait != 1 and service !=1 and solution != 1 and total != 1 会起作用。但这排除了所有包含 1 的记录,当我执行查询并看到结果时很明显。

但是有没有"easy"等待排除四列全为1的行?

所以当我执行查询时,它看起来像这样

Name | wait|service |solution | total | date  
joe     1     3          5        4      2018-09-02 00:00:00.000
joe     5     5          5        5      2018-09-03 00:00:00.000
joe     3     1          5        3      2018-09-04 00:00:00.000
joe     3     1          1        3      2018-09-05 00:00:00.000
joe     1     5          3        1      2018-09-06 00:00:00.000

如有任何帮助,我们将不胜感激

你快到了。只需将您的逻辑更改为 OR 而不是 AND:

select * 
from TableName
where Wait<>1 or Service<>1 or solution<>1 or total<>1

如果所有 4 个字段的值为 1,则 where 子句中的条件将 return false 导致记录从结果中排除。

结果为 SQL Fiddle

使用:

SELECT *
FROM TEST
WHERE
 (COLUMN_1 + COLUMN_2 + COLUMN_3 + COLUMN_4) <> 4
OR
(COLUMN_1 = COLUMN_2
 AND COLUMN_2 = COLUMN_3
 AND COLUMN_3 = COLUMN_4
 AND COLUMN_4 <> 1);

一个NOT有时可以使它更容易:

WHERE NOT (wait = 1 AND service = 1 AND solution = 1 AND total = 1)