sql >> Database >  >> RDS >> Mysql

Mysql selecteer ordinaal

Met behulp van variabelen en voorwaarden kunt u de teller resetten op basis van een voorwaarde (libraryId is gewijzigd). Verplicht te bestellen op de kolom libraryId.

SELECT books.*, 
    if( @libId = libraryId, 
        @var_record := @var_record + 1, 
        if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)
    ) AS Ordinal 
FROM books
JOIN (SELECT @var_record := 0, @libId := 0) tmp
ORDER BY libraryId;

Het tweede if-statement wordt gebruikt om twee toewijzingen te groeperen en @var_record terug te geven.

if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)


  1. MySQL-tijdzone wijzigen?

  2. MySql - OP DUPLICATE KEY INSERT

  3. Hoe kan ik een lijst maken van alle externe sleutels die verwijzen naar een bepaalde tabel in SQL Server?

  4. Configureer SQL*Plus om niets anders dan gegevens terug te geven