Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL SELECT DISTINCT cho nhiều cột?


Để hiểu câu lệnh SELECT DISTINCT cho nhiều cột trong MySQL, hãy xem ví dụ và tạo bảng. Câu truy vấn tạo bảng:

mysql> create table selectDistinctDemo 
    -> ( 
    -> InstructorId int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> StudentId int, 
    -> TechnicalSubject varchar(100) 
    -> ); 
Query OK, 0 rows affected (0.50 sec)

Chèn bản ghi vào bảng:

mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(121,'Java'); 
Query OK, 1 row affected (0.15 sec) 
mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(121,'MongoDB'); 
Query OK, 1 row affected (0.16 sec) 
mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(121,'MySQL'); 
Query OK, 1 row affected (0.15 sec) 
mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(298,'Python'); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(298,'SQL Server'); 
Query OK, 1 row affected (0.15 sec) 
mysql> insert into selectDistinctDemo(StudentId,TechnicalSubject) values(397,'C#'); 
Query OK, 1 row affected (0.13 sec)

Hiển thị tất cả bản ghi:

mysql> select * from selectDistinctDemo;

Kết quả:

+--------------+-----------+------------------+ 
| InstructorId | StudentId | TechnicalSubject | 
+--------------+-----------+------------------+ 
| 1            | 121       | Java             | 
| 2            | 121       | MongoDB          | 
| 3            | 121       | MySQL            | 
| 4            | 298       | Python           | 
| 5            | 298       | SQL Server       | 
| 6            | 397       | C#               | 
+--------------+-----------+------------------+ 
6 rows in set (0.00 sec)

Câu truy vấn dùng SELECT DISTINCT cho nhiều cột:

mysql> select InstructorId,StudentId,TechnicalSubject from selectDistinctDemo 
-> where InstructorId IN 
-> ( 
-> select max(InstructorId) from selectDistinctDemo 
-> group by StudentId 
-> ) 
-> order by InstructorId desc;

Kết quả:

+--------------+-----------+------------------+ 
| InstructorId | StudentId | TechnicalSubject | 
+--------------+-----------+------------------+ 
| 6            | 397       | C#               | 
| 5            | 298       | SQL Server       | 
| 3            | 121       | MySQL            | 
+--------------+-----------+------------------+ 
3 rows in set (0.10 sec)