选择其中column1,column2,column3和column4!= 1的行

时间:2018-09-29 10:25:53

标签: sql operators

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

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

我试图弄清楚如何进行选择查询,以排除其中wait,service,solution和total为1的行。

我起初以为where wait != 1 and service !=1 and solution != 1 and total != 1是可以的。但这不包括所有包含1的记录,当我执行查询并看到结果时很明显。

但是是否有“轻松”等待排除其中四列全为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

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

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

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

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

产生SQL Fiddle

答案 1 :(得分:0)

使用:

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);

答案 2 :(得分:0)

NOT有时可以使其更容易:

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