MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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に変更するだけで対応できます。

  1. MySQLデータベースの列から一意(ユニーク)なレコード数をカウントする方法

    MySQLである列に含まれる重複しない(一意の)レコード数を集計したい場合は、集計関数 COUNT(DISTINCT ...) を GROUP BY 句と組み合わせて使用します。これにより、ユーザーごとの投稿メッセージ数のように、グループ単位での一意レコード数を簡単に取得できます。実際にサンプルを使って確認してみましょう。1. サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( UserName varchar(100), UserPostMessage text ); Query OK,

  2. MySQLテーブルから新しく追加されたレコードを取得する方法

    MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId