ORDER BY
paling kiri item tidak boleh tidak setuju dengan item DISTINCT
ayat. Saya mengutip manual tentang DISTINCT
:
Coba:
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;
Atau gunakan 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;
Jika c.cluster_id, feed_id
adalah kolom kunci utama dari semua (keduanya dalam hal ini) tabel yang Anda sertakan kolom dari dalam SELECT
list, maka ini hanya berfungsi dengan PostgreSQL 9.1 atau lambat.
Jika tidak, Anda perlu GROUP BY
sisa kolom atau agregat atau memberikan informasi lebih lanjut.