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

Как да групирате следващите редове (въз основа на критерии) и след това да ги преброите [MySQL]?

За да направя това, използвах няколко променливи, структурата на таблицата, създадох моя собствена само за тестване и тя е:

create table abc (id int, name varchar(20),type int);

insert into abc values 
( 1 , 'A'    , 1  ),
( 2 , 'A'    , 2 ),
( 3 , 'B'    , 1  ),
( 4 , 'A'    , 1  ),
( 5 , 'A'    , 4  ),
( 6 , 'A'    , 5  )

заявката завърши така:

set @a:='';
set @counter:=1;
set @groupby:=0;
select *,count(REPEATED) from (select name,if(@a=name,@counter:[email protected]+1,@counter:=1) as rep,if(@counter=1,@groupby:[email protected]+1,@groupby) as repeated,@a:=name type from abc) as t group by repeated

можете да видите, че работи в SQLFIDDLE ако имате въпроси, уведомете ме.

В SQLFIDDLE




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Запитване на 2 таблици в една заявка

  2. PHP:Кой е най-бързият начин за запитване на MySQL? Тъй като PDO е болезнено бавен

  3. Обвързването на модел на маршрут не работи

  4. Изберете всички колони, по-големи от някаква стойност

  5. PHP PDO - Показване на парола при твърде много връзки