MySQLで特定の複数行(全行ではない)の合計値を取得する方法
MySQLで特定の行だけの合計値を取得するには?
MySQLでは、集計関数SUM()とWHERE句を組み合わせることで、テーブル内の特定の行(すべての行ではなく)の値の合計を簡単に求めることができます。本記事では、IN演算子を使って対象となる行を絞り込み、合計を取得する手順をサンプルコード付きで解説します。
1. サンプルテーブルを作成する
まず、デモ用のテーブルを作成しましょう。
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Amount int ); Query OK, 0 rows affected (0.65 sec)
2. レコードを挿入する
insertコマンドを使用して、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable(Amount) values(400); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable(Amount) values(10); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(Amount) values(50); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(Amount) values(500); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable(Amount) values(80); Query OK, 1 row affected (0.09 sec)
3. テーブルの内容を確認する
select文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のようになります。
+----+--------+ | Id | Amount | +----+--------+ | 1 | 400 | | 2 | 10 | | 3 | 50 | | 4 | 500 | | 5 | 80 | +----+--------+ 5 rows in set (0.00 sec)
4. 特定の行のみの合計を取得する
ここがポイントです。WHERE句にIN演算子を組み合わせることで、指定したIdの行だけを対象に合計を計算できます。以下の例では、Idが「1」「4」「5」の行のAmountの合計を取得しています。
mysql> select sum(Amount) from DemoTable where Id in(1,4,5);
実行結果は以下の通りです。
+-------------+ | sum(Amount) | +-------------+ | 980 | +-------------+ 1 row in set (0.00 sec)
出力を見ると、Id 1(400)、Id 4(500)、Id 5(80)の合計である「980」が正しく返されていることがわかります。このように WHERE ... IN (...) を使えば、全行ではなく任意の複数行だけを柔軟に集計できます。条件が単一の行であれば = を、範囲指定であれば BETWEEN を使うなど、目的に応じてWHERE句の書き方を変えるのも有効です。
-
MySQLでテーブルの最後から2番目のレコードを取得する方法
MySQLで最後から2番目のレコード(末尾の一つ前のレコード)を取得したい場合、サブクエリを利用します。単純に ORDER BY ... DESC LIMIT 1 を使うと最後のレコードしか取得できないため、サブクエリと組み合わせることで後ろから2番目のデータを取り出せます。基本構文SELECT * FROM (SELECT * FROM yourTableName ORDER BY yourIdColumnName DESC LIMIT 2) anyAliasName ORDER BY yourIdColumnName LIMIT 1;この構文のポイントは以下の通りです。内側のサブクエリでI
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI