首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么这两个带有否定WHERE子句的SELECT COUNT(*)不能正确求和?

为什么这两个带有否定WHERE子句的SELECT COUNT(*)不能正确求和?
EN

Stack Overflow用户
提问于 2019-01-22 11:14:56
回答 1查看 74关注 0票数 0

我使用where子句从表中选择行,但是否定where子句会返回更多的行。

假设一个包含1000行的表,select where返回600行,那么该select where的反版本不应该返回400行吗?

代码语言:javascript
运行
AI代码解释
复制
select count(*) from trips

trips表包含420444行。

我选择了周末出发的所有行程。

代码语言:javascript
运行
AI代码解释
复制
select count(*) from trips
where service_id in
(select service_id from calendar_dates
where date_part('dow', date) in (5, 6))

返回363272

运行相同的查询,但不是在周末开始的旅行

代码语言:javascript
运行
AI代码解释
复制
select count(*) from trips
where service_id in
(select service_id from calendar_dates
where date_part('dow', date) not in (5, 6))

返回377326

363272 + 377326 = 740598,这比420444多得多

当涉及where子句中的子查询时,count函数的行为是否有所不同?

这是在具有GTFS data https://developers.google.com/transit/gtfs/的数据库上完成的。我不知道我错过了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-22 11:18:44

它没有被否定。

如果您有与dow = 3, 4, 5, 6相同的service_id,那么它将出现在两个计数中。

正确的否定是

代码语言:javascript
运行
AI代码解释
复制
select count(*) from trips
where service_id NOT in
(select service_id from calendar_dates
where date_part('dow', date) in (5, 6))

或与not exists等效的

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54307072

复制
相关文章
用于 SELECT 和 WHERE 子句的函数
1 一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。 2 3 包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。 4 5 注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。 6 7 你可以强制 My
用户1112962
2018/07/03
4.9K0
[MySQL]select和where子句优化
数据库优化: 1.可以在单个SQL语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化 2.数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置 3.在数据库级别进行优化,在硬件级别进行优化,平衡可移植性和性能 4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引; 5.压缩适用于InnoDB表的各种工作负载,以及只读MyISAM表 6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题 7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。 8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要
唯一Chat
2019/09/10
1.6K0
ClickHouse中,WHERE、PREWHERE子句和SELECT子句的使用
在ClickHouse中,WHERE和PREWHERE子句都用于筛选数据,但它们在查询中的使用有一些区别和注意事项。
一凡sir
2023/10/20
2.1K0
ClickHouse中,WHERE、PREWHERE子句和SELECT子句的使用
SQL WHERE 子句
如果只希望选取居住在城市 "Beijing" 中的人,我们需要向 SELECT 语句添加 WHERE 子句:
子润先生
2021/07/01
1K0
SQL中,having子句和where子句的区别
在SQL之中,where和having的功能有点像,导致我一直搞不清楚这两者的区别。因此今天专门研究了以下,在此记录。
灯珑LoGin
2022/10/31
2.7K0
SQL 查询条件放到 JOIN 子句与 WHERE 子句的差别
我们再写 SQL 的时候,最常碰到一个问题就是,把查询条件放到 JOIN 子句和放到 WHERE 子句有什么不同呢?比如:
Denis
2023/04/14
2.6K0
开心档之MySQL WHERE 子句
以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:
iOS Magician
2023/03/31
1.2K0
SQL学习之SELECT子句顺序
下面来总计下之前的随笔中所说过的所有的SELECT子句的顺序。 子句            说明            是否必须使用 SELECT                  要返回的列或者表达式                            是 FROM                     从中检索数据的表                     仅在从表中选择数据时使用 WHERE                          行级过滤                       
郑小超.
2018/01/24
9200
开心档之MySQL WHERE 子句
以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:
iOS Magician
2023/04/06
1K0
MySQL JSON 数组用于 WHERE IN 子句
例如,我们有一个包含用户 ID 的 JSON 数组 [1, 2, 3],我们希望查询所有这些用户的信息。在这种情况下,我们需要将 JSON 数组转换为 IN 子句的形式。
恋喵大鲤鱼
2023/10/12
1.2K0
Neo4j-1.5 WHERE子句
MATCH命令中可以用WHERE子句来过滤结果 简单WHERE子句: WHERE <condition> 复杂WHERE子句: WHERE <condition> <boolean-operator> <condition> 其中<condition>语法为: <property-name> <comparison-operator> <value> 语法说明: S.No. 语法元素 描述 1 WHERE 它是一个Neo4j CQL关键字。 2 <property-name><属性名称> 它是节点或关系的属
悠扬前奏
2019/11/29
8080
Select count(*)、Count(1)、Count(0)的区别和执行效率比较
结论 https://www.cnblogs.com/sueris/p/6650301.html 这里把上面实验的结果总结一下:
用户1212940
2022/04/13
1.4K0
原创 数据库3
count(*)—统计关系里面有多少元组 count(A)–计算属性A有多少个值 加distinct 就是查有多少不同的值 sum 就是把所有是a的属性求和 avg 求均值 A是某个表一个单个的属性
20岁爱吃必胜客
2022/11/12
2230
原创 数据库3
关于 Oracle 分组查询
COUNT()(个数)、SUM()(求和)、AVG()(平均)、MAX()(最大值)、MIN()(最小值)。
星哥玩云
2022/08/17
6350
知识点、SQL语句学习及详细总结
sql server详细的基础总结,可先点开CSDN自带的博客目录看看大体结构~ 一. 数据库简介和创建 1. 系统数据库 在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行的系统数据库: (1)master:记录了SQL SERVER实例的所有系统级消息,包括实例范围的元数据(如登录帐号)、端点、链接服务器和系统配置设置。 (2)msdb:供SQL SERVER 代理服务调度报警和作业以及记录操作员的使用,保存关于调度报警、作业、操作员等信息。(备份还原时) (3)model:
慕白
2018/07/06
2K0
Studio 3T中的新功能:支持SQL SELECT DISTINCT,WHERE子句中的JSON对象及更多
并将DISTINCT与JOIN,SELECT,GROUP BY,HAVING和ORDER BY语句相结合。
MongoDB中文社区
2019/04/22
3.6K0
Studio 3T中的新功能:支持SQL SELECT DISTINCT,WHERE子句中的JSON对象及更多
MySQL 查询专题
MySQL中可根据需要使用很多条件操作符和操作符的组合。为了检查某个范围的值,可使用BETWEEN操作符。
acc8226
2022/05/17
5.2K0
为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?
统计一张表的总数量,是我们开发中常有的业务需求,通常情况下,我们都是使用 select count(*) from t SQL 语句来完成。随着业务数据的增加,你会发现这条语句执行的速度越来越慢,为什么它会变慢呢?
码农编程进阶笔记
2021/07/20
3970
为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?
SQL 基础(四)单关系数据查询
查询结果仍为表,WHERE、SELECT 分别相当于关系代数中的 选取、投影 操作
攻城狮杰森
2022/06/03
1.3K0
SQL 基础(四)单关系数据查询
点击加载更多

相似问题

带有where的MySql Count子句

12

即使有where子句,"SELECT COUNT(*)“也很慢

82

带有WHERE子句的SELECT语句

31

带有"where“子句的Postgresql count子串

10

带有Join和where子句的Count语句

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档