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

MySQLでIDが4で割り切れる行をすべて抽出するクエリの書き方

MySQLでは、剰余演算子(%)またはMOD()関数を使うことで、特定の数値で割り切れる行を簡単に抽出できます。この記事では、IDが4で割り切れるレコードだけを取得する方法を、サンプルSQLと実行結果付きで解説します。

1. サンプルテーブルの作成

まず、IDカラムを含むテーブルを作成しましょう。

mysql> create table DemoTable
    (
    ID int,
    StudentName varchar(10),
    CountryName varchar(20)
    );
Query OK, 0 rows affected (0.70 sec)

2. レコードの挿入

続いて、INSERTコマンドでテーブルに複数のレコードを挿入します。

mysql> insert into DemoTable values(0,'David','AUS');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(3,'Chris','UK');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values(8,'Carol','US');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(9,'Sam','US');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(12,'Robert','UK');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values(10,'Mike','AUS');
Query OK, 1 row affected (0.17 sec)

3. テーブルの内容を確認する

SELECT文を実行して、登録済みの全レコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+------+-------------+-------------+
| ID   | StudentName | CountryName |
+------+-------------+-------------+
| 0    | David       | AUS         |
| 3    | Chris       | UK          |
| 8    | Carol       | US          |
| 9    | Sam         | US          |
| 12   | Robert      | UK          |
| 10   | Mike        | AUS         |
+------+-------------+-------------+
6 rows in set (0.00 sec)

4. IDが4で割り切れる行を検索するクエリ

IDが4で割り切れるすべての行を取得するには、WHERE句で(ID % 4) = 0という条件を指定します。剰余演算子「%」は割り算の余りを返すため、「余りが0」となる行、つまり4で割り切れる行だけが抽出される仕組みです。

mysql> select *from DemoTable where (ID%4)=0;

出力結果

+------+-------------+-------------+
| ID   | StudentName | CountryName |
+------+-------------+-------------+
| 0    | David       | AUS         |
| 8    | Carol       | US          |
| 12   | Robert      | UK          |
+------+-------------+-------------+
3 rows in set (0.30 sec)

このように、IDが0・8・12の3行だけが取得できました。

補足:MOD()関数を使う方法

剰余演算子「%」の代わりに、標準SQL準拠のMOD()関数を使ってもまったく同じ結果が得られます。

mysql> select *from DemoTable where MOD(ID,4)=0;

用途に応じて読みやすい方を選んでください。なお、IDがNULLの場合は比較結果がNULLとなるため抽出対象外になる点にも注意が必要です。

  1. 【MySQL】最後のクエリの総行数を取得する方法:SQL_CALC_FOUND_ROWSとFOUND_ROWS()の使い方

    MySQLでは、FOUND_ROWS()関数を使うことで、直前に実行したクエリが該当させた全行数を簡単に取得できます。この記事では、SQL_CALC_FOUND_ROWSと組み合わせた具体的な使い方を、実例とともにわかりやすく解説します。基本構文LIMIT句で表示件数を制限しながら、条件に一致する全行数を把握したい場合は、SELECT文にSQL_CALC_FOUND_ROWSを付けて実行します。基本構文は以下の通りです。SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM `information_schema`.tables WHERE TABLE_NAME

  2. 【MySQL】特定の列の値が0のみの行を別の列でグループ化して抽出する方法

    はじめに 「ある列の値が0のみの行を抽出し、さらに別の列でグループ化したい」,そんな場合には、GROUP BY句とHAVING句を組み合わせるのが効果的です。この記事では、実際にテーブルを作成し、データを挿入しながら、目的の結果を得るまでの手順を具体例とともに解説します。 1. サンプルテーブルの作成 まずはCREATE TABLE文でテーブルを作成しましょう。 mysql> create table DemoTable1344 -> ( -> `SequenceId` int NOT NULL AUTO_INCREMENT PRIMARY KEY,