MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

重複している場合、テーブルからすべての値を1回だけ選択するにはどうすればよいですか?


繰り返される場合は、distinctキーワードを使用して、テーブルからすべての値を1回だけ選択できます。

構文は次のとおりです

select distinct yourColumnName from yourTableName;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです。

mysql> create table displayOnlyDistinctValue
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserName varchar(100),
   -> UserAge int
   -> );
Query OK, 0 rows affected (0.47 sec)
>

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。

クエリは次のとおりです。

mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',23);
Query OK, 1 row affected (0.23 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Mike',23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',21);
Query OK, 1 row affected (0.16 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Carol',25);
Query OK, 1 row affected (0.16 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',26);
Query OK, 1 row affected (0.14 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',27);
Query OK, 1 row affected (0.13 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Bob',22);
Query OK, 1 row affected (0.17 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',22);
Query OK, 1 row affected (0.16 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示します。

クエリは次のとおりです。

mysql> select *from displayOnlyDistinctValue;

以下は出力です。

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1      | Larry    | 23      |
| 2      | Mike     | 23      |
| 3      | Larry    | 21      |
| 4      | Sam      | 23      |
| 5      | Carol    | 25      |
| 6      | Sam      | 26      |
| 7      | Sam      | 27      |
| 8      | Bob      | 22      |
| 9      | Larry    | 22      |
+--------+----------+---------+
9 rows in set (0.00 sec)

これは、重複している場合にテーブルからすべての値を1回だけ選択するためのクエリです。

ケース1 -UserName列名。

クエリは次のとおりです。

mysql> select distinct UserName from displayOnlyDistinctValue;

出力

+----------+
| UserName |
+----------+
| Larry    |
| Mike     |
| Sam      |
| Carol    |
| Bob      |
+----------+
5 rows in set (0.00 sec)

ケース2 -UserAge列名。

クエリは次のとおりです。

mysql> select distinct UserAge from displayOnlyDistinctValue;

出力..

+---------+
| UserAge |
+---------+
| 23      |
| 21      |
| 25      | 
| 26      |
| 27      |
| 22      |
+---------+
6 rows in set (0.00 sec)

  1. そのテーブルの列値がMySQLの別のテーブルの列値と一致する場合にのみ、あるテーブルからデータを選択するにはどうすればよいですか?

    このために、EXISTSとともにサブクエリを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1    -> (    -> Id int,    -> SubjectName varchar(20)    -> ); Query OK, 0 rows affected (0.58 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1 val

  2. MySQLテーブルで順序付けられた3行のみを選択するにはどうすればよいですか?

    このために、LIMITとともにORDERBY句を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1551    -> (    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> EmployeeName varchar(20)    -> ); Query OK, 0 rows affected (0.52 sec) 挿入コマンド-を使用して、テーブルにいく