Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menggabungkan item yang hampir sama dengan SQL?

Jika Anda mencoba:

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;

Ini memberikan:

+------+--------+------+
| 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    |
+------+--------+------+

Jadi Anda bisa mencoba:

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;

Yang memberi

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

(Saya memanggil tabel saya foo dan juga hanya menggunakan nama a dan b karena saya terlalu malas untuk menulis zhangsan dan lisi berulang-ulang).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aksen Jerman Mysql pencarian tidak sensitif dalam pencarian teks lengkap

  2. SQL - Masukkan formulir ke dalam database

  3. Bagaimana cara menerapkan fungsi pada nilai klausa where menggunakan Knex?

  4. SQL - Konversi format Datetime

  5. Contoh Koneksi MySQL R ODBC