Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

row_number theo một số cột

Rất tiếc, tôi không tin rằng MySQL cung cấp các hàm phân tích mà bạn đang cố gắng sử dụng, tức là ROWNUMBER() OVER PARTITION;

Tuy nhiên, điều đó không có nghĩa là nó không thể được bắt nguồn bằng cách sử dụng các phương tiện khác. Hãy thử đi:

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. Mysql phân giải ngược địa chỉ IP như thế nào?

  2. PHP So sánh các giá trị cột và chỉnh sửa cơ sở dữ liệu cho phù hợp

  3. Codeigniter Select_Sum trả về mảng không phải giá trị số?

  4. Bản ghi sao chép SQL với một chỉ mục duy nhất

  5. tìm hàng liên tiếp cuối cùng