左端のORDERBY
アイテムはDISTINCT
のアイテムと一致することはできません 句。 DISTINCTに関するマニュアルを引用します。コード>
:
試してみてください:
SELECT *
FROM (
SELECT DISTINCT ON (c.cluster_id, feed_id)
c.cluster_id, num_docs, feed_id, url_time
FROM url_info u
JOIN cluster_info c ON (c.cluster_id = u.cluster_id)
WHERE feed_id IN (SELECT pot_seeder FROM potentials)
AND num_docs > 5
AND url_time > '2012-04-16'
ORDER BY c.cluster_id, feed_id, num_docs, url_time
-- first columns match DISTINCT
-- the rest to pick certain values for dupes
-- or did you want to pick random values for dupes?
) x
ORDER BY num_docs DESC;
または、 GROUP BY
を使用します :
SELECT c.cluster_id
, num_docs
, feed_id
, url_time
FROM url_info u
JOIN cluster_info c ON (c.cluster_id = u.cluster_id)
WHERE feed_id IN (SELECT pot_seeder FROM potentials)
AND num_docs > 5
AND url_time > '2012-04-16'
GROUP BY c.cluster_id, feed_id
ORDER BY num_docs DESC;
c.cluster_id、feed_id
の場合 SELECT
に列を含めるすべての(この場合は両方の)テーブルの主キー列です。 リストの場合、これはPostgreSQL 9.1でのみ機能します またはそれ以降。
それ以外の場合は、 GROUP BY
する必要があります 残りの列または集計または詳細情報を提供します。