MySQLテーブルから偶数番目のレコードを交互に取得する方法
MySQLでは、GROUP BY句とHAVING句を組み合わせてMOD()関数を使用することで、テーブルから偶数番目(idが2、4、6…)のレコードだけを簡単に抽出できます。本記事では、その具体的な手順をサンプルデータとともに解説します。
サンプルデータの準備
この概念を理解するために、まず以下のようなテーブル「Information」のデータを使用します。
mysql> Select * from Information; +----+---------+ | id | Name | +----+---------+ | 1 | Gaurav | | 2 | Ram | | 3 | Rahul | | 4 | Aarav | | 5 | Aryan | | 6 | Krishan | +----+---------+ 6 rows in set (0.00 sec)
偶数番目のレコードを取得するクエリ
以下のクエリを実行すると、上記のテーブル「Information」から偶数番目のレコード(idが2、4、6の行)を取得できます。
mysql> Select id,Name from information group by id having mod(id,2) = 0; +----+---------+ | id | Name | +----+---------+ | 2 | Ram | | 4 | Aarav | | 6 | Krishan | +----+---------+ 3 rows in set (0.00 sec)
クエリの仕組み
このクエリは、以下の2つの要素によって構成されています。
- GROUP BY id:idの値ごとに行をグループ化し、重複しない各idに対して集計処理を行えるようにします。
- HAVING mod(id,2) = 0:idを2で割った余りが0、すなわちidが偶数であるグループだけを抽出します。
WHERE句ではなくHAVING句を使うのは、グループ化後の結果に対してフィルタリングを行うためです。
その結果、idが2、4、6である3行のレコードが出力されます。
補足:奇数番目のレコードを取得したい場合
逆に、奇数番目のレコード(idが1、3、5…)を取得したい場合は、条件をhaving mod(id,2) = 1に変更するだけで対応できます。
-
MySQLデータベースの列から一意(ユニーク)なレコード数をカウントする方法
MySQLである列に含まれる重複しない(一意の)レコード数を集計したい場合は、集計関数 COUNT(DISTINCT ...) を GROUP BY 句と組み合わせて使用します。これにより、ユーザーごとの投稿メッセージ数のように、グループ単位での一意レコード数を簡単に取得できます。実際にサンプルを使って確認してみましょう。1. サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( UserName varchar(100), UserPostMessage text ); Query OK,
-
MySQLテーブルから新しく追加されたレコードを取得する方法
MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId