sql >> Databáze >  >> RDS >> Mysql

Číslo řádku pro výsledky dotazu seskupené podle sloupce

To by mělo být docela jednoduché.

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

Objednal jsem podle fk_id nejprve jsem se ujistil, že všechny vaše cizí klíče jsou pohromadě (co když opravdu nejsou v tabulce?), pak jsem provedl vaši preferovanou objednávku, tj. do rcv_date . Dotaz kontroluje změnu fk_id, a pokud existuje, pak se proměnná čísla řádku nastaví na 1, nebo se proměnná zvýší. Řeší se v případě prohlášení. Všimněte si, že @fk:=fk_id se provádí po kontrole velikosti písmen, jinak to ovlivní číslo řádku.

Upravit: Právě jsem si všiml vašeho vlastního řešení, které bylo náhodou stejné jako já. Sláva! :)




  1. T-SQL:Na rozdíl od řetězení řetězců - jak rozdělit řetězec do více záznamů

  2. Rekurzivní kategorie s jediným dotazem?

  3. Výsledky PHP SQL dotazu

  4. Hledejte ve sloupci JSON pomocí Laravelova výmluvného