我正在尝试计算旧记录。在这种情况下,即使我设置了一些限制,为什么 Postgres 会给出 1160 的结果LIMIT 1
?
SELECT COUNT(*) FROM data WHERE datetime < '2015-09-23 00:00:00' LIMIT 1;
count
--------
1160
(1 row)
我期望结果为 1 或 0,但结果为 1160。为什么?
我正在尝试计算旧记录。在这种情况下,即使我设置了一些限制,为什么 Postgres 会给出 1160 的结果LIMIT 1
?
SELECT COUNT(*) FROM data WHERE datetime < '2015-09-23 00:00:00' LIMIT 1;
count
--------
1160
(1 row)
我期望结果为 1 或 0,但结果为 1160。为什么?
您正在限制聚合函数的结果集
count()
,它将始终返回 1 行。IE:它限制了count(*)
函数的输出,而不是LIMIT
ingFROM data WHERE datetime < '2015-09-23 00:00:00'
。基本上:
FROM data WHERE datetime < '2015-09-23 00:00:00'
count(*)
是他们LIMIT
就是这样count
我怀疑您希望它这样做:
由于这基本上是一项存在性检查,因此也可以这样做:
从 postgres 手册(http://www.postgresql.org/docs/current/static/queries-limit.html):
限制不会限制您的查询将扫描多少行 - 它只会影响您的记录集中显示的行数。
它会给出你想要的结果,你也可以添加更多字段来获取和获取 json 中的聚合记录