Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để kết hợp gần cùng một mục bằng SQL?

Nếu bạn thử:

SET @name:='',@num:=0;

SELECT id,
       @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC;

Điều này mang lại:

+------+--------+------+
| id   | number | user |
+------+--------+------+
|    1 |      1 | a    |
|    2 |      1 | a    |
|    3 |      1 | a    |
|    4 |      2 | b    |
|    5 |      2 | b    |
|    6 |      2 | b    |
|    7 |      3 | a    |
|    8 |      3 | a    |
+------+--------+------+

Vì vậy, bạn có thể thử:

SET @name:='',@num:=0;

SELECT COUNT(*) as count, user
FROM (
SELECT @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC
) x
GROUP BY number;

Điều này mang lại cho

+-------+------+
| count | user |
+-------+------+
|     3 | a    |
|     3 | b    |
|     2 | a    |
+-------+------+

(Tôi đã gọi bảng của mình là foo và cũng chỉ sử dụng tên ab vì tôi quá lười để viết zhangsanlisi lặp đi lặp lại).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao sử dụng bin2hex khi chèn dữ liệu nhị phân từ PHP vào MySQL?

  2. Tại sao M xuất hiện trong Kết quả truy vấn MySQL của Clojure

  3. Làm cách nào để xác định xem có sử dụng SSL trong Kết nối MySql không?

  4. Tại sao tôi không thể chèn vào MySQL?

  5. Nhóm các bản ghi từ vòng lặp while | PHP