13.色々なSELECT

■重複を取り除く
SELECT DISTINCT ON ([ColName]) * FROM [TableName];
※[ColName]が重複していないレコードを表示する。
※ON ([ColName])を指定しなければ全カラムで重複してないレコード表示となる。

■結果を別テーブルに格納
SELECT * INTO [TableName2] FROM [TableName1];
※[TableName1]のSELECT結果を[TableName2]に格納。

■グループ単位で集約
SELECT * FROM [TableName] GROUP BY [ColName];
※[ColName]ごとに集約。

集約関数の利用
SELECT [ColName], COUNT(*) FROM [TableName] GROUP BY [ColName];
※GROUP BYで集約されたレコード数を表示する。

HAVINGの併用
SELECT [ColName], COUNT(*) FROM [TableName] GROUP BY [ColName] HAVING COUNT(*) >= 2;
※前段レコード数が2以上のレコードのみ表示。
※WHEREはレコード単位、HAVINGはグループ単位で条件付けできる。

■ソート
SELECT * FROM [TableName] ORDER BY [ColName];
※[ColName]の値に基づき、昇順(ASC:デフォルト)にソートされる。
※降順はORDER BY [ColName] DESC とする。
※GROUP BYと併用するときはGROUP BYを先に記述。

【Tips】
SELECT * FROM [TableName] ORDER BY [ColName]=0,[ColName];
※0を含む値で0をソート順の最後にする。
SELECT * FROM [TableName] ORDER BY [ColName] IS NULL,[ColName];
※Nullを含む値でNullをソート順の最後にする。

■NULLIF
SELECT NULLIF([ColName] , [Value]) FROM [TableName];
※[ColName] = [Value] が成立するとNULLを返す。以外は[ColName]の値を返す。



戻る | CGI'sトップへ戻る