PHP | MySQLのORDER BYのサンプルコード 複数カラム指定、昇順・降順、文字数でのソートなど
PHPからMySQLのSELECT文やUPDATE文などを使う際に利用されるORDER BYの基本的な使い方、複数のカラムを指定する方法、昇順・降順のソート、文字数が多い順または少ない順でのソート方法など紹介しています。
サンプルに利用しているテーブルの中身は以下の通りです。
id | en | ja | value |
---|---|---|---|
1 | pineapple | パイン | 500 |
2 | banana | バナナ | 300 |
3 | apple | リンゴ | 200 |
4 | orange | オレンジ | 100 |
5 | peach | モモ | 400 |
目次
ORDER BYの基本的な記述サンプル
SELECT文でORDER BYを使うシンプルなサンプルコードです。
// クエリ
$sql = "select * from `table_name` ORDER BY en";
// クエリを実行
$res = $mysqli->query($sql);
//apple banana orange peach pineapple
英語の名前順になっている事が確認できます。
DESCで逆順(降順)でソートする
ORDER BYにDESCを指定して逆順(降順)にするサンプルコードです。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY en DESC";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//pineapple peach orange banana apple
英語の名前順で逆順になっている事が確認できます。
ORDER BYで複数のカラムを指定する
ORDER BYで複数のカラムを指定する場合はカンマ区切りでカラム名を記述していきます。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY en, value";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//apple(200) banana(300) orange(100) peach(500) pineapple(500)
データが悪くて、結果からソートが正常なのか良くわかりません。
ORDER BYで複数のカラム指定に昇順・降順を指定する
ORDER BYで複数のカラムを指定する際にDESCで昇順・降順ソートを使うには、個別にASCまたはDESCを指定します。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY en DESC, value";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//pineapple(500) peach(500) orange(100) banana(300) apple(200)
昇順と降順を混在させる。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY en DESC, value";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//apple(200) banana(300) orange(100) peach(500) pineapple(500)
データが悪くて、結果からソートが正常なのか良くわかりません。
CHAR_LENGTH()で文字数の少ない・多い順にソートする
CHAR_LENGTH()関数を使って、対象カラムのデータを文字数の少ない順、または多い順でソートする事が可能です。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY CHAR_LENGTH(`en`)";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//apple peach banana orange pineapple
CHAR_LENGTH()にDESCを指定すると文字数が多い順にソートされます。
// クエリ
$sql = "SELECT * FROM `table_name` ORDER BY CHAR_LENGTH(`en`) DESC";
// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
echo $dat['en'] . ' ';
}
//pineapple banana orange apple peach
ディスカッション
コメント一覧
まだ、コメントがありません