SELECT DISTINCT field1, field2, field3, ......
FROM table;
次の SQL ステートメントを実行しようとしていますが、すべての列を返すようにしたいです。
これは可能ですか?
このようなもの:
SELECT DISTINCT field1, *
FROM table;
ベストアンサー1
次の条件でグループを検索しています:
select *
from table
group by field1
これは、明確な on ステートメントを使用して記述されることもあります。
select distinct on field1 *
from table
ただし、ほとんどのプラットフォームでは、他の列の動作が指定されていないため、上記のどちらも機能しません。(最初の方法は、MySQL を使用している場合に機能します。)
個別のフィールドを取得し、毎回任意の 1 行を選択することができます。
一部のプラットフォーム (PostgreSQL、Oracle、T-SQL など) では、ウィンドウ関数を使用してこれを直接実行できます。
select *
from (
select *,
row_number() over (partition by field1 order by field2) as row_number
from table
) as rows
where row_number = 1
他のもの(MySQL、SQLite)では、テーブル全体をそれ自体に結合するサブクエリを書く必要があります(例)なので、お勧めできません。