sql >> Database >  >> RDS >> Mysql

rij_nummer met meerdere kolommen

Helaas geloof ik niet dat MySQL de analytische functies biedt die u probeert te gebruiken, bijv. ROWNUMBER() OVER PARTITION;

Dat betekent echter niet dat het niet met andere middelen kan worden afgeleid. Probeer dit eens:

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. MysQl-fout:ongeldig parameternummer

  2. Een functieaanroep aanroepen in een string in een Oracle Procedure

  3. Hoe te controleren of 'MySQL-server is verdwenen'

  4. Hoe krijg ik het volgende record in de mysql-resultaatgegevensset?