1つ(またはn)の列のみを区別するには:
select distinct on (name)
name, col1, col2
from names
これにより、名前を含むすべての行が返されます。返される行を制御する場合は、注文する必要があります:
select distinct on (name)
name, col1, col2
from names
order by name, col1
col1で並べ替えると、最初の行が返されます。
distinct on
:
SELECT DISTINCT ON(expression [、...])は、指定された式が等しいと評価される行の各セットの最初の行のみを保持します。 DISTINCT ON式は、ORDER BYの場合と同じルールを使用して解釈されます(上記を参照)。各セットの「最初の行」は、目的の行が最初に表示されるようにORDER BYを使用しない限り、予測できないことに注意してください。
DISTINCT ON式は、左端のORDERBY式と一致する必要があります。 ORDER BY句には通常、各DISTINCTONグループ内の行の目的の優先順位を決定する追加の式が含まれます。