MySQL: DISTINCT / UNIQUE を選択しても、すべての列が返されますか? 質問する

MySQL: DISTINCT / UNIQUE を選択しても、すべての列が返されますか? 質問する
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)では、テーブル全体をそれ自体に結合するサブクエリを書く必要があります()なので、お勧めできません。

おすすめ記事