ターミナルから結果を出力せずにMySQLクエリを実行する方法
結果を非表示にしてMySQLクエリを実行するには
MySQLでは、ユーザー定義変数(@変数)を利用することで、クエリの実行結果をターミナルに出力せずに処理を完了させることができます。SELECT文の結果を変数に格納すれば、画面が大量の出力で埋まってしまうのを防げます。ここでは、具体的な手順を例とともに解説します。
1. テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable709 (Amount int);
Query OK, 0 rows affected (0.62 sec)
2. レコードを挿入する
insertコマンドを使って、テーブルに複数のレコードを追加します。
mysql> insert into DemoTable709 values(100);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable709 values(560);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable709 values(7800);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable709 values(1020);
Query OK, 1 row affected (0.15 sec)
3. テーブルの中身を確認する
select文で全レコードを表示してみましょう。
mysql> select *from DemoTable709;
実行すると、以下のような出力が得られます。
+--------+
| Amount |
+--------+
| 100 |
| 560 |
| 7800 |
| 1020 |
+--------+
4 rows in set (0.00 sec)
4. 結果を出力せずにクエリを実行する
本題のポイントです。次のクエリを実行すると、SELECT文の結果をそのまま表示せず、ユーザー定義変数@TotalAmountに格納できます。
mysql> set @TotalAmount=(select sum(Amount) from DemoTable709);
Query OK, 0 rows affected (0.00 sec)
「Query OK」というメッセージのみが返され、集計結果そのものは出力されません。
5. 格納した値を確認する方法
後から結果を確認したくなった場合は、変数をSELECTするだけで簡単に参照できます。
mysql> select @TotalAmount;
実行結果は以下の通りです。
+--------------+
| @TotalAmount |
+--------------+
| 9480 |
+--------------+
1 row in set (0.05 sec)
まとめ
このように、ユーザー定義変数を使えば、クエリの実行結果をターミナルに表示させることなく一時的に保持できます。大量のデータを扱う場合や、スクリプト内で中間結果を保持したい場合に特に便利なテクニックなので、ぜひ活用してみてください。
-
MySQLで2つの列の組み合わせごとの出現回数を集計する方法
MySQLでは、GROUP BY句とGREATEST()・LEAST()関数を組み合わせることで、2つの列にまたがる値の組み合わせごとの出現回数を簡単に集計できます。この記事では、具体的なサンプルを使って手順を解説します。1. サンプルテーブルを作成するまず、2つの名前列を持つテーブルを作成します。mysql> create table DemoTable -> ( -> Name1 varchar(20), -> Name2 varchar(20) -> );Query OK, 0 rows affected (0.61 sec)2. テ
-
MySQLで文字列の先頭15文字だけを表示するクエリの書き方
MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable -> ( &nbs