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. आप MySQL में रिकॉर्ड के बीच औसत समय अंतर कैसे बनाते हैं?

  2. सीरियल जैसा INT कॉलम

  3. SQL क्वेरी में अस्पष्ट फ़ील्ड त्रुटि पर काबू पाना

  4. Python3 mysqlclient-1.3.6 (उर्फ PyMySQL) उपयोग?

  5. हाइबरनेट_अनुक्रम तालिका उत्पन्न होती है