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

MySQLで単一のレコードを除いて重複レコードを削除するにはどうすればよいですか?


1つのレコードを保持し、残りの重複レコードを削除する必要があるため、このための条件を指定してDELETEコマンドを使用できます。

まずテーブルを作成しましょう-

mysql> create table DemoTable
(
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentName varchar(40)
);
Query OK, 0 rows affected (0.48 sec)

挿入コマンド-

を使用してテーブルにレコードを挿入します
mysql> insert into DemoTable(StudentName) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentName) values('Sam');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('David');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.26 sec)

selectコマンドを使用してテーブルのレコードを表示する-

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 4         | Carol       |
| 5         | David       |
| 6         | Carol       |
+-----------+-------------+
6 rows in set (0.00 sec)

これは、単一のレコードを除く重複レコードを削除するためのクエリです-

mysql> delete tbl1 from DemoTable tbl1,DemoTable tbl2
WHERE
tbl1.StudentName = tbl2.StudentName AND tbl1.StudentId > tbl2.StudentId;
Query OK, 2 rows affected (0.79 sec)

上記のクエリは、「Carol」の2行を削除し、「Carol」レコードの1つを残しました。

テーブルのレコードを表示してみましょう-

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 5         | David       |
+-----------+-------------+
4 rows in set (0.00 sec)

  1. MySQLの対応する重複レコードのSUM

    最初にテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> StudentName varchar(20),    -> StudentMarks int    -> ); Query OK, 0 rows affected (0.68 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('Chris',

  2. MySQLの特定の値に対して低い値のレコード以外のレコードを選択するにはどうすればよいですか?

    このためには、WHERE句を使用する必要があります。以下は構文です- select *from yourTableName where yourColumnName > yourValue; テーブルを作成しましょう- mysql> create table demo27 −> ( −> id int not null auto_increment primary key, −> value int −> ); Query OK, 0 rows affected (3.14 sec) 挿入コマンド-を使用し