SELECT DISTINCT を指定すると、クエリ結果には一意の行だけが残ります。つまり、結果内で完全に一致する行の組ごとに、1 行だけが残ります。
一意の値を持つ必要があるカラムの一覧は SELECT DISTINCT ON (column1, column2,...) のように指定できます。カラムを指定しない場合は、すべてのカラムが対象になります。
次のテーブルを考えます:
DISTINCT を使用する場合:
DISTINCT を使用する:
DISTINCT と ORDER BY
DISTINCT 句と ORDER BY 句に異なるカラムを指定できます。DISTINCT 句は ORDER BY 句より先に実行されます。
次のテーブルを考えます。
2, 4 はソート前に除外されました。
クエリを記述する際は、この実装上の特性を考慮してください。
NULL の処理
DISTINCT は、NULL を NULL が特定の値であり、NULL==NULL であるかのように扱います。つまり、DISTINCT の結果では、NULL を含む同じ組み合わせは 1 回しか現れません。これは、ほかの多くの文脈での NULL の扱いとは異なります。
代替手段
SELECT 句で指定したものと同じ値の組み合わせに対して GROUP BY を適用すれば、同じ結果を得ることができます。ただし、GROUP BY を使う方法とはいくつか異なる点があります。