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