【问题标题】:Select rows where column1, column2, column3 and column4 != 1选择 column1、column2、column3 和 column4 的行!= 1
【发布时间】:2018-09-29 10:25:53
【问题描述】:

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

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

我试图弄清楚如何进行选择查询,排除等待、服务、解决方案和总计为 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

任何帮助将不胜感激

【问题讨论】:

  • 统计四列的总和,只列出总和大于4的记录?
  • @StefanR:我们不能盲目地取列的总和。如果值是 1,0,1,2 怎么办?列的总和仍为 4,但不应从结果中排除。
  • 请解释为什么where wait != 1 and service !=1 and solution != 1 and total != 1 不起作用。这似乎是您想要的逻辑。

标签: sql operators


【解决方案1】:

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

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

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

结果为@​​987654321@。

【讨论】:

  • 感谢您的出色工作!我认为或不会工作,所以我从未尝试过。但现在我知道了
  • @JeanFredrikLeirtrø:很高兴我能帮上忙。
【解决方案2】:

NOT 有时可以让事情变得更简单:

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

【讨论】:

    【解决方案3】:

    用途:

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

    【讨论】:

    • 这看起来很复杂。
    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多