Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да комбинирам почти същия елемент чрез SQL?

Ако опитате:

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;

Това дава:

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

Така че тогава можете да опитате:

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;

Което дава

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

(Нарекох таблицата си foo а също и току-що използвани имена a и b защото бях твърде мързелив да напиша zhangsan и lisi отново и отново).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql Дублиращи се редове (Дублиране е открито с помощта на 2 колони)

  2. Как да получите и поръчате най-подходящите записи от базата данни с множество ключови думи Laravel 5

  3. Достъпът до Mysql е отказан поради потребителска грешка?

  4. Предупреждение:mysql_real_escape_string():Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:НЕ) .../public_html/checklogin.php

  5. Грешка в конектора на MySQL Стойността на часовата зона на сървъра Централноевропейско време