SQL

【SQL】特定のレコードだけをソートする方法

SQLで特定のレコードだけをソートする方法を解説します。

サンプルデータの作成

まずはサンプル用のusersテーブルを作成します。

CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

次にusersテーブルにサンプルデータを投入します。

INSERT INTO users (name)
VALUES ('山田'), ('村上'), ('大谷'), ('近藤'), ('山本'), ('佐々木'), ('甲斐');

データを確認します。

SELECT * FROM users;
idname
1山田
2村上
3大谷
4近藤
5山本
6佐々木
7甲斐

上記のサンプルデータを使い、これから解説します。

特定のレコードだけをソートする方法

例えば、ID3の大谷を先頭に、ID2の村上を先頭から2番目に並び替える場合、以下のクエリで実現できます。

SELECT * FROM users
ORDER BY id = 3 DESC, id = 2 DESC;

[結果]

idname
3大谷
2村上
1山田
4近藤
5山本
6佐々木
7甲斐

逆にID3の大谷を最後に、ID2の村上を最後から2番目に並び替える場合は以下のクエリで実現できます。

SELECT * FROM users
ORDER BY id = 3 ASC, id = 2 ASC;

[結果]

idname
1山田
4近藤
5山本
6佐々木
7甲斐
2村上
3大谷

このようにクエリのORDER BY部分をORDER BY カラム名 = 値 DESC(ASC)とすることで特定のレコードだけをソートさせることができます。

Webエンジニア
タクマ
埼玉県出身の33歳

新卒で入社した専門商社で8年間営業職として勤務

30歳からプログラミングを始め31歳でWebエンジニアに転職成功

受託開発企業での開発を1年弱経験したのち、現在はスタートアップの自社開発企業で開発に従事している
\ Follow me /

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA