MySQLで2つの列の値を比較してレコードを表示する方法
はじめに
MySQLでは、WHERE句を使うことで、2つの列の値を比較し、条件に一致するレコードだけを抽出できます。この記事では、実際のSQL文と実行結果を通して、2つの列(Num1とNum2)を比較してレコードを表示する方法を分かりやすく解説します。
テーブルの作成
まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Num1 int,
-> Num2 int
-> );
Query OK, 0 rows affected (0.54 sec)
ここでは、整数型(int)の列「Num1」と「Num2」を持つ「DemoTable」というテーブルを作成しています。
データの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values(100,200);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(200,100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(300,400);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(400,300);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(500,600);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(600,500);
Query OK, 1 row affected (0.18 sec)
全レコードの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+------+------+ | Num1 | Num2 | +------+------+ | 100 | 200 | | 200 | 100 | | 300 | 400 | | 400 | 300 | | 500 | 600 | | 600 | 500 | +------+------+ 6 rows in set (0.00 sec)
2つの列を比較するクエリ
それでは本題です。次のクエリでは、WHERE句に「Num1 < Num2」という条件を指定することで、Num1の値がNum2より小さいレコードのみを抽出しています。
mysql> select *from DemoTable where Num1 < Num2;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+------+------+ | Num1 | Num2 | +------+------+ | 100 | 200 | | 300 | 400 | | 500 | 600 | +------+------+ 3 rows in set (0.00 sec)
解説とポイント
出力結果を見ると、元の6件のうち、Num1がNum2より小さい条件を満たす3件(100<200、300<400、500<600)だけが表示されていることがわかります。このように、WHERE句の中で列同士を直接比較できるのがMySQLの便利な点です。
なお、比較演算子は「<」以外にも複数用意されており、用途に応じて使い分けられます。
- >:左辺が右辺より大きい
- <=:左辺が右辺以下
- >=:左辺が右辺以上
- =:両者が等しい
- <> または !=:両者が等しくない
たとえば「Num1 > Num2」とすれば逆に大きい方のレコードを、「Num1 = Num2」とすれば両列が等しいレコードを抽出できます。数値だけでなく、日付型や文字型の列同士の比較にも同じ考え方が使えるので、ぜひ活用してください。
-
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のストアドプロシージャでテーブルのレコードを表示する方法
MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT