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

row_number с няколко колони

За съжаление не вярвам, че MySQL предоставя аналитичните функции, които се опитвате да използвате, т.е. ROWNUMBER() OVER PARTITION;

Това обаче не означава, че не може да се извлече с други средства. Опитайте това:

create table myTable (type varchar(50) not null,id int(10) unsigned not null,
date1 varchar(10) default null,date2 varchar(10) default null,diff int unsigned default null
);

insert into myTable (type,id,date1,date2,diff) values ('blue',1,'x1','xxx',18);
insert into myTable (type,id,date1,date2,diff) values ('blue',1,'x2',null,null);
insert into myTable (type,id,date1,date2,diff) values ('red',1,'x1',null,null);
insert into myTable (type,id,date1,date2,diff) values ('blue',2,'x1','xx',15);
insert into myTable (type,id,date1,date2,diff) values ('blue',2,'x2','xx',18);
insert into myTable (type,id,date1,date2,diff) values ('blue',2,'x3',null,null);

select t.type,t.id,t.date1,t.date2,t.rownum
from
(
select mt.type,mt.id,mt.date1,mt.date2,mt.diff,
case 
when mt.id = @curId and mt.type = @curType then @curRow := @curRow + 1 
     else @curRow := 1
END as rownum,
@curId := mt.id,
@curType := mt.type
from myTable mt
join (select @curRow := 0, @curId := -1,@curType="") r
order by mt.id,mt.type
) t;



  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. Мога ли автоматично да генерирам обекти от данни на Squeryl, за да отразяват съществуваща MySql схема?

  3. Rows_sent:12 Rows_examined:549024 - как да оптимизираме mySQL заявката?

  4. База данни с рецепти, търсене по съставка

  5. Изберете първото и последното клеймо за време, където userID е уникален