如何排除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;
我可能会在实践中使用第一个版本,因为它与您的英语语言要求非常相似。
这是一个简单的方法,
- Select id's (Name) 我们在特定条件下不需要。
SELECT Name
FROM Table_name
WHERE CallCount = 3 and callDuration = 0;
- 将上面的查询放在子查询中,我们 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
希望对你有所帮助
谢谢:)
我有一个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;
我可能会在实践中使用第一个版本,因为它与您的英语语言要求非常相似。
这是一个简单的方法,
- Select id's (Name) 我们在特定条件下不需要。
SELECT Name FROM Table_name WHERE CallCount = 3 and callDuration = 0;
- 将上面的查询放在子查询中,我们 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 |
希望对你有所帮助
谢谢:)