カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

ORDER BY句で使える条件式

SQLのORDER BY句では、特定のカラムを昇順や降順に並べ替えることができます。
更にCASE式を使えば任意の並び順にすることも可能です。

今回は、特定のカラムがNULLとなる場合があるテーブルで、NULLは最後にまとめて表示し、それ以外は昇順の表示になるようにしてみたいと思います。

例として以下のようなテーブルがあったとします。

TEST_TABLE
id name age
1 赤井 35
2 池田 22
3 内山 NULL
4 江崎 54
5 太田 NULL

年齢の昇順でデータを表示してみましょう。

SELECT * FROM TEST_TABLE ORDER BY age;

そうすると、NULLが先に表示され、それ以降が年齢の昇順という形になるかと思います。

TEST_TABLE
id name age
3 内山 NULL
5 太田 NULL
2 池田 22
1 赤井 35
4 江崎 54

これを、NULLは最後にまとめて表示し、それ以外を年齢の昇順で表示したい…というのが今回の焦点でしたね。
そのような場合にORDER BY句でCASEの条件式を使います。

SELECT * FROM TEST_TABLE 
ORDER BY
    CASE WHEN age IS NULL THEN 2 ELSE 1 END,
    age;

このようにORDER BY句でCASE式を使用し、年齢がNULLの場合の優先順位を下げてあげるわけです。
その後、年齢の昇順を指定しているので、実行結果の並び順は以下のようになります。

TEST_TABLE
id name age
2 池田 22
1 赤井 35
4 江崎 54
3 内山 NULL
5 太田 NULL

ただし、パフォーマンスはあまりよくないようなので、大規模なデータベースで使うのは避けたほうが良いかもしれません。

使いようによっては便利なので、是非一度試してみてください。

公式マニュアル:
https://docs.microsoft.com/ja-jp/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver16#Case

501 views

iTunesによるバックアップの保存場所

最近、iPhoneをバックアップしていなかったので、久しぶりにバックアップしておこうと思ったときに、バックアップの保存先が変わっていたのでメモ。

以前はこのような保存場所でした。

C:\Users\{username}\AppData\Roaming\Apple Computer\MobileSync\Backup

推測ですが、2020年8月頃から以下のような場所に変わったようです。

C:\Users\{username}\Apple\MobileSync\Backup
443 views

PHPでPOSTリダイレクトする方法

PHPでリダイレクトさせたいとき、header関数を使いますよね。
通常はGETリクエストにてリダイレクトされます。
それを強制的にPOSTリクエストにし、パラメータを引き継ぐことができます。

headerの書式

header(string $header, bool $replace = true, int $response_code = 0): void

POSTリクエストでパラメータを引き継いでリダイレクトするには、$response_code307を与えます。

header("Location: example.php", true, 307);

公式マニュアル:
https://www.php.net/manual/ja/function.header.php

6,839 views

Docker環境の構築(Windows)

Dockerの環境を構築しようとして、結構色々と手間だったので備忘録ついでに手順をご紹介します。
環境によって多少の違いがあるかもしれませんが、参考になれば幸いです。
今回構築した環境はWindows10 Home 64bitです。

Dockerの環境構築に必要なものはこちらです。

  • Windows Terminal
  • Visual Studio Code(VSCode)
  • Git for Windows
  • WSL2
  • Docker

今回、VSCodeとGitのインストールについては割愛させていただきます。
ダウンロードのリンク先だけ貼っておきます。
VSCode: https://code.visualstudio.com/
Git for Windows: https://gitforwindows.org/

Windows Terminal

Windows Terminalはタブを利用してターミナルを使えるソフトになります。
Microsoft Storeからインストールします。

https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=ja-jp&gl=JP

VSCodeにDocker拡張機能

VSCodeにDockerの拡張機能をインストールしてください。

WSL2

Windows上でLinuxを動かせるようにする仕組みです。
DockerはLinux上で動作させるのが良いみたいです。

WSL2を有効化してWindows上にLinux環境を構築します。
続きを読む…»

579 views

VSCode+GitとGitHubを連携させる

VSCodeを使ってローカルリポジトリとGitHubのリモートリポジトリを連携させる方法

まずはGitHubにログインして新しいリポジトリを作成しましょう。
新しいリポジトリを作成したときに表示されるコマンドでの公式のやり方を参考にします。

リポジトリを何の設定もせずに作成したときに以下のような連携方法が表示されます。

…or create a new repository on the command line
echo "# python_practice" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin main
…or push an existing repository from the command line
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git branch -M main
git push -u origin main

前者の方法はローカルリポジトリが未作成の場合の方法です。
今回はローカルリポジトリは作成済のものとして後者の方法で進めていきます。
続きを読む…»

895 views