Estou tentando contar registros antigos. Por que o Postgres dá um resultado de 1160, mesmo que eu estabeleça algum limite, LIMIT 1
neste caso?
SELECT COUNT(*) FROM data WHERE datetime < '2015-09-23 00:00:00' LIMIT 1;
count
--------
1160
(1 row)
Eu esperava um resultado de 1 ou 0, mas dá 1160. Por quê?
Você está limitando o conjunto de resultados da função agregada
count()
, que sempre retornará 1 linha. IE: está limitando a saída dacount(*)
função, em vez deLIMIT
apenasFROM data WHERE datetime < '2015-09-23 00:00:00'
.Basicamente:
FROM data WHERE datetime < '2015-09-23 00:00:00'
count(*)
são elesLIMIT
é issocount
Eu suspeito que você está querendo fazer isso:
Como isso é basicamente uma verificação de existência, pode-se também fazer:
No manual do postgres ( http://www.postgresql.org/docs/current/static/queries-limit.html ):
O limite não restringe quantas linhas sua consulta examinará - afeta apenas quantas linhas aparecerão em seu conjunto de registros.
Ele fornecerá o resultado desejado e você poderá adicionar mais campos para buscar e obter registros agregados em json também