Computer >> Máy Tính >  >> Lập trình >> MySQL

Xóa các hàng có nội dung trùng lặp và tương tự &nhận hàng với số lượng tối đa với câu lệnh chọn MySQL?

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1468
   -> (
   -> Id int,
   -> Name varchar(20),
   -> Age int
   -> );
Query OK, 0 rows affected (1.21 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1468 values(100,'Chris',23);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1468 values(101,'Bob',25);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1468 values(102,'David',30);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1468 values(100,'Chris',23);
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable1468 values(100,'Chris',38);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1468 values(101,'Bob',23);
Query OK, 1 row affected (0.13 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1468;

Điều này sẽ tạo ra kết quả sau -

+------+-------+------+
| Id   | Name  |  Age |
+------+-------+------+
|  100 | Chris |   23 |
|  101 | Bob   |   25 |
|  102 | David |   30 |
|  100 | Chris |   23 |
|  100 | Chris |   38 |
|  101 | Bob   |   23 |
+------+-------+------+
6 rows in set (0.00 sec)

Đây là truy vấn để xóa các hàng có nội dung trùng lặp và tương tự và lấy hàng có số tối đa với câu lệnh select -

mysql> select Id,Name,Age from DemoTable1468
   -> group by Name,Id
   -> having max(Age);

Điều này sẽ tạo ra kết quả sau -

+------+-------+------+
| Id   | Name  | Age  |
+------+-------+------+
|  100 | Chris |   23 |
|  101 | Bob   |   25 |
|  102 | David |   30 |
+------+-------+------+
3 rows in set (0.00 sec)