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

Tôi có thể nhận được số lượng các giá trị lặp lại trong một cột với MySQL không?


Có, bạn có thể sử dụng ORDER BY DESC với GROUP BY. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> PostMessage varchar(100)
   -> );
Query OK, 0 rows affected (0.69 sec)

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

mysql> insert into DemoTable(PostMessage) values('Hi');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(PostMessage) values('Hello');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable(PostMessage) values('Hi');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable(PostMessage) values('Awesome');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(PostMessage) values('Hello');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable(PostMessage) values('Hi');
Query OK, 1 row affected (0.09 sec)

mysql> insert into DemoTable(PostMessage) values('Awesome');
Query OK, 1 row affected (0.33 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 DemoTable;

Đầu ra

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

+----+-------------+
| Id | PostMessage |
+----+-------------+
|  1 | Hi          |
|  2 | Hello       |
|  3 | Hi          |
|  4 | Awesome     |
|  5 | Hello       |
|  6 | Hi          |
|  7 | Awesome     |
+----+-------------+
7 rows in set (0.00 sec)

Sau đây là truy vấn để nhận giá trị cao nhất trong cơ sở dữ liệu MySQL -

mysql> select PostMessage,count(Id) from DemoTable group by PostMessage
    -> order by count(Id) DESC;

Đầu ra

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

+-------------+-----------+
| PostMessage | count(Id) |
+-------------+-----------+
| Hi          | 3         |
| Hello       | 2         |
| Awesome     | 2         |
+-------------+-----------+
3 rows in set (0.00 sec)

Nếu bạn chỉ muốn cao nhất, bạn có thể sử dụng truy vấn sau -

mysql> select PostMessage,count(Id)  from DemoTable group by PostMessage having count(Id) > 2;

Đầu ra

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

+-------------+-----------+
| PostMessage | count(Id) |
+-------------+-----------+
| Hi          | 3         |
+-------------+-----------+
1 row in set (0.00 sec)