Postgresql DISTINCT和其他字段给出了Missing FROM子句

时间:2015-11-27 15:27:21

标签: postgresql distinct where

我想在Postgresql 9.4表上搜索DISTINCT,其中有大约300 000条记录。大约需要8秒钟。我读到这个post,使用它可以加快速度。它真的做到了。降至0.26秒

SELECT COUNT(*) FROM (SELECT DISTINCT column_name FROM table_name) AS temp;

快得多
COUNT(DISTINCT(column_name))

当我写这个时,我得到结果,但我想添加一个WHERE子句。

这可行,但需要7秒。

SELECT COUNT(DISTINCT(species)) FROM darwincore2
WHERE darwincore2.dataeier ILIKE '%nnog%'

这有效(0.26秒),但在添加WHERE子句时失败:

SELECT COUNT(*) FROM (SELECT DISTINCT species FROM darwincore2) as temp
WHERE darwincore2.dataeier ILIKE '%nnog%'

使用:

ERROR:  missing FROM-clause entry for table "darwincore2"

任何人都知道如何解决这个问题?或者我正在尝试做一些不起作用的事情?

1 个答案:

答案 0 :(得分:2)

WHERE子句应该在子查询中:

SELECT COUNT(*) 
FROM (
    SELECT DISTINCT species 
    FROM darwincore2
    WHERE darwincore2.dataeier ILIKE '%nnog%'
    ) as temp