-- -- SELECT_DISTINCT_ON -- SELECT DISTINCT ON (string4) string4, two, ten FROM tmp ORDER BY string4 using <, two using >, ten using <; string4 | two | ten ---------+-----+----- AAAAxx | 1 | 1 HHHHxx | 1 | 1 OOOOxx | 1 | 1 VVVVxx | 1 | 1 (4 rows) -- this will fail due to conflict of ordering requirements SELECT DISTINCT ON (string4, ten) string4, two, ten FROM tmp ORDER BY string4 using <, two using <, ten using <; ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY expressions LINE 1: SELECT DISTINCT ON (string4, ten) string4, two, ten ^ SELECT DISTINCT ON (string4, ten) string4, ten, two FROM tmp ORDER BY string4 using <, ten using >, two using <; string4 | ten | two ---------+-----+----- AAAAxx | 9 | 1 AAAAxx | 8 | 0 AAAAxx | 7 | 1 AAAAxx | 6 | 0 AAAAxx | 5 | 1 AAAAxx | 4 | 0 AAAAxx | 3 | 1 AAAAxx | 2 | 0 AAAAxx | 1 | 1 AAAAxx | 0 | 0 HHHHxx | 9 | 1 HHHHxx | 8 | 0 HHHHxx | 7 | 1 HHHHxx | 6 | 0 HHHHxx | 5 | 1 HHHHxx | 4 | 0 HHHHxx | 3 | 1 HHHHxx | 2 | 0 HHHHxx | 1 | 1 HHHHxx | 0 | 0 OOOOxx | 9 | 1 OOOOxx | 8 | 0 OOOOxx | 7 | 1 OOOOxx | 6 | 0 OOOOxx | 5 | 1 OOOOxx | 4 | 0 OOOOxx | 3 | 1 OOOOxx | 2 | 0 OOOOxx | 1 | 1 OOOOxx | 0 | 0 VVVVxx | 9 | 1 VVVVxx | 8 | 0 VVVVxx | 7 | 1 VVVVxx | 6 | 0 VVVVxx | 5 | 1 VVVVxx | 4 | 0 VVVVxx | 3 | 1 VVVVxx | 2 | 0 VVVVxx | 1 | 1 VVVVxx | 0 | 0 (40 rows) -- bug #5049: early 8.4.x chokes on volatile DISTINCT ON clauses select distinct on (1) floor(random()) as r, f1 from int4_tbl order by 1,2; r | f1 ---+------------- 0 | -2147483647 (1 row)