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

Làm cách nào để xác định xem một giá trị có xuất hiện trong nhóm GROUP BY trong MySQL hay không?

Bạn có thể sử dụng hàm tổng hợp SUM () cùng với IF để xác định xem một giá trị có xuất hiện trong nhóm GROUP BY hay không.

Trước tiên, hãy để chúng tôi tạo một bảng demo

mysql> create table GroupbygroupDemo
   -> (
   -> UserId int,
   -> UserName varchar(20)
   -> );
Query OK, 0 rows affected (1.48 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into GroupbygroupDemo values(10,'John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into GroupbygroupDemo values(10,'Carol');
Query OK, 1 row affected (0.08 sec)
mysql> insert into GroupbygroupDemo values(10,'Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into GroupbygroupDemo values(20,'David');
Query OK, 1 row affected (0.17 sec)
mysql> insert into GroupbygroupDemo values(30,'John');
Query OK, 1 row affected (0.12 sec)
mysql> insert into GroupbygroupDemo values(30,'David');
Query OK, 1 row affected (0.20 sec)
mysql> insert into GroupbygroupDemo values(30,'Mike');
Query OK, 1 row affected (0.16 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from GroupbygroupDemo;

Kết quả như sau

+--------+----------+
| UserId | UserName |
+--------+----------+
|     10 | John     |
|     10 | Carol    |
|     10 | Carol    |
|     20 | David    |
|     30 | John     |
|     30 | David    |
|     30 | Mike     |
+--------+----------+
7 rows in set (0.00 sec)

Đây là truy vấn để xác định xem một giá trị có xuất hiện trong nhóm GROUP BY

mysql> select UserId,
   -> if(sum(UserName='David'),'YES','NO') as Correct_Name_David
   -> from GroupbygroupDemo
   -> group by UserId;

Sau đây là kết quả

+--------+--------------------+
| UserId | Correct_Name_David |
+--------+--------------------+
|     10 | NO                 |
|     20 | YES                |
|     30 | YES                |
+--------+--------------------+
3 rows in set (0.08 sec)