如何排除sql中满足多个条件的行?

How to exclude rows which satisfies multiple conditions in sql?

我有一个table喜欢

Name Call Count Call Duration (sec)
A 2 0
B 3 52
C 3 0
D 5 78
E 2 21

我试图排除呼叫计数为 3 且呼叫持续时间(秒)为 0 的记录。

我写的查询

 SELECT *
 FROM Table 
 WHERE (Call Count != 3
 AND Call Duration (sec) != 0)

我的输出为

Name Call Count Call Duration (sec)
D 5 78
E 2 21

我需要的输出

Name Call Count Call Duration (sec)
A 2 0
B 3 52
D 5 78
E 2 21

提前致谢

你想要:

SELECT *
FROM Table 
WHERE NOT (call_count = 3 AND call_duration = 0);

根据德摩根定律,这可以重写为:

SELECT *
FROM Table 
WHERE call_count <> 3 OR call_duration <> 0;

我可能会在实践中使用第一个版本,因为它与您的英语语言要求非常相似。

这是一个简单的方法,

  1. Select id's (Name) 我们在特定条件下不需要。

SELECT Name FROM Table_name WHERE CallCount = 3 and callDuration = 0;

  1. 将上面的查询放在子查询中,我们 select 只有那些 NOT IN() 上面的记录。

所以我们的最终查询将是

Select * from Table_name where Name not in(SELECT Name FROM Table_name WHERE CallCount = 3 and callDuration = 0);

输出:

Name Call Count Call Duration
A 2 0
B 3 52
D 5 78
E 2 21

希望对你有所帮助

谢谢:)