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

时间:2021-04-09 10:09:19

标签: mysql sql where-clause

我有一张像

<头>
姓名 调用次数 通话时长(秒)
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)

我得到的输出为

<头>
姓名 调用次数 通话时长(秒)
D 5 78
E 2 21

我需要的输出

<头>
姓名 调用次数 通话时长(秒)
A 2 0
B 3 52
D 5 78
E 2 21

提前致谢

2 个答案:

答案 0 :(得分:3)

你想要:

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

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

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

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

答案 1 :(得分:0)

这里有一个简单的方法是,

  1. 选择特定条件下我们不需要的 ID(名称)。
<块引用>

选择名称 FROM Table_name WHERE CallCount = 3 和 callDuration = 0;

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

所以我们最终的查询将是

<块引用>

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

输出:

<头>
姓名 调用次数 通话时长
A 2 0
B 3 52
D 5 78
E 2 21

我希望这对您有所帮助。

谢谢:)