sql >> Database >  >> RDS >> Mysql

Rijnummer voor zoekopdrachtresultaten gegroepeerd op een kolom

Dit zou vrij eenvoudig moeten zijn.

SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality, 
       @fk:=fk_id, rcv_date
FROM   (SELECT @row:=0) AS r, 
       (SELECT @fk:=0) AS f, 
       (SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t

Ik heb besteld op fk_id eerst om ervoor te zorgen dat al uw buitenlandse sleutels bij elkaar komen (wat als ze niet echt in de tabel staan?), daarna heb ik uw gewenste bestelling gedaan, dwz vóór rcv_date . De query controleert op een wijziging in fk_id en als die er is, wordt de rijnummervariabele ingesteld op 1, of anders wordt de variabele verhoogd. Het wordt behandeld in case-statement. Merk op dat @fk:=fk_id wordt gedaan na het controleren van de hoofdletters, anders heeft dit invloed op het rijnummer.

Bewerken: Ik heb zojuist je eigen oplossing opgemerkt die toevallig dezelfde was als waarmee ik eindigde. Hulde! :)




  1. Werken met ruimtelijke gegevens met Gorm en MySQL

  2. Selecteer ouder en kinderen met MySQL

  3. Modellering van databasetabellen voor gebruikers, groepen en lidmaatschappen

  4. voeg meerdere gegevens toe aan een xml-bestand met behulp van PHP xmlwriter