SQL

SQL の 基本 DISTINCT / ORDER BY でコントロール!

k.w

SQL でデータを抽出できるだけでは、 基本 はまだまだです。指定した形、意図した形に抽出出来てこそです。その為に覚えなければならない構文が DISTINCT (ディスティンクト)と ORDER BY (オーダバイ)です。重複削除したり並び替えたりする手法です。

スポンサーリンク

DISTINCT ( 重複 した行を除いて 抽出 )

SELECT DISTINCT カラム1 FROM テーブルA;

意味:Aというテーブルから、1というカラムの、重複した行を除いて、抽出する。

指定したカラム(列)に入力された値の、種類を調べたりする場合に使います。

登録されたカラムの値から、LOV(List of Value:選択肢)を登録するための値を作成する場合に使えますね。

ORDER BY ( 並び替え )

SELCT * FROM テーブルA ORDER BY カラム1;

意味:Aというテーブルから、1というカラム順に並び替え、すべて抽出する。

データベースには、データが随時登録されます。
登録された順に抽出するのであれば、特に指定は不要ですが、特定のカラムで並び替えて抽出したい場合ありますよね?

例えば、日付順で並び変えたりする場合に、ORDER BYを使えば、並び替えて抽出できます。

ただ、新しい日付順・古い日付順など、並び替えのルールを指定したい場合があります。

指定して並び替えたい場合は、次のオプションを使うことでコントロールすることができます。

ASC ( 昇順 )

SELECT * FROM テーブルA ORDER BY カラム1 ASC;

意味:Aというテーブルから、1というカラムを小さい順に、すべて抽出する。

SELECT * FROM テーブルA ORDER BY 日付 ASC;

意味:Aというテーブルから、日付の古い順に、すべて抽出する。

DESC ( 降順 )

SELECT * FROM テーブルA ORDER BY カラム1 DESC;

意味:Aというテーブルから、1というカラムを大きい順に、すべて抽出する。

SELECT * FROM テーブルA ORDER BY 日付 DESC;

意味:Aというテーブルから、日付の新しい順に、すべて抽出する。

日付の場合は、昇順=古い順、降順=新しい順、ということに気を付けましょう。
これは日付の起点が、1900/1/1が、カウントの起点であり、1と数値表現されることを理解すれば、過去に比べて未来の方が数値が大きくなることを考えれば理解できますね。

なお、複数の列を指定して並び替えることも可能です。

SELECT * FROM テーブルA ORDER BY カラム1 , カラム2 DESC;

意味:Aというテーブルから、1というカラム順に並べ、
かつカラム1の中で2というカラムの大きい順に、すべて抽出する。

ここまで理解すれば、テーブルから指定した形で値を抽出することができますね。

その他、SQL構文は以下にて整理分類しています。

[https://way2se.ringtrees.com/sql-001/]

ABOUT ME
記事URLをコピーしました