MySQLのDISTINCT句を複数の列に適用する方法をわかりやすく解説
MySQLでは、DISTINCT句を複数の列に対して使用することができます。この場合、結果セットにおける行の「一意性」は、指定したすべての列の値の組み合わせによって判定されます。つまり、単一の列だけではなく、複数列の組み合わせが完全に一致する行のみが重複として除外される仕組みです。
具体例
ここでは、10行のデータを持つテーブル「testing」を例に考えてみましょう。
mysql> select * from testing; +------+---------+---------+ | id | fname | Lname | +------+---------+---------+ | 200 | Raman | Kumar | | 201 | Sahil | Bhalla | | 202 | Gaurav | NULL | | 203 | Aarav | NULL | | 204 | Harshit | Khurana | | 205 | Rahul | NULL | | 206 | Piyush | Kohli | | 207 | Lovkesh | NULL | | 208 | Gaurav | Kumar | | 209 | Raman | Kumar | +------+---------+---------+ 10 rows in set (0.00 sec)
上記のテーブルには、「Raman Kumar」や「Gaurav」など、重複したデータが含まれています。次に、「Fname」と「Lname」という2つの列に対してDISTINCT句を適用してみます。すると、両方の列の値の組み合わせに基づいて一意な行だけが取得されます。
mysql> Select DISTINCT FNAME,LNAME from testing; +---------+---------+ | FNAME | LNAME | +---------+---------+ | Raman | Kumar | | Sahil | Bhalla | | Gaurav | NULL | | Aarav | NULL | | Harshit | Khurana | | Rahul | NULL | | Piyush | Kohli | | Lovkesh | NULL | | Gaurav | Kumar | +---------+---------+ 9 rows in set (0.00 sec)
元のテーブルは10行でしたが、クエリの結果は9行になっています。これは、「Fname」と「Lname」の組み合わせが完全に一致する行(例:id=200とid=209の「Raman Kumar」)が1つにまとめられたためです。一方、「Gaurav NULL」と「Gaurav Kumar」のように、片方の列でも値が異なる場合は別々の行として扱われる点に注意してください。
このように、DISTINCT句を複数列に適用する際は、各列の値の組み合わせ全体が一意であるかどうかで重複排除が行われることを理解しておくことが重要です。
-
MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説
MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId
-
MySQLで複数の列(カラム)を検索する方法をわかりやすく解説
この記事では、MySQLで複数の列(カラム)を同時に検索する方法について解説します。前提条件: ここでは、あらかじめ「DBNAME」という名前のデータベースと、「tableName」という名前のテーブルが作成されているものとします。AND演算子とOR演算子を使い分ける複数の列を検索する際には、AND 演算子と OR 演算子を使用します。どちらを使うかは、検索結果として何を取得したいかによって決まります。AND: すべての条件に一致するレコードのみを返すOR: いずれかの条件に一致するレコードを返すそれでは、具体的な例を見ていきましょう。例1:AND演算子を使用する場合SELECT colNam