Consultez cet article, il montre comment imiter la fonction SQL ROW_NUMBER() avec une partition by dans MySQL. J'ai rencontré ce même scénario dans une mise en œuvre de WordPress. J'avais besoin de ROW_NUMBER() et il n'y en avait pas.
http://www.explodybits.com/2011/11/mysql-row-number/
L'exemple de l'article utilise une seule partition par champ. Pour partitionner par des champs supplémentaires, vous pourriez faire quelque chose comme ceci :
SELECT @row_num := IF(@prev_value=concat_ws('',t.col1,t.col2),@row_num+1,1) AS RowNumber
,t.col1
,t.col2
,t.Col3
,t.col4
,@prev_value := concat_ws('',t.col1,t.col2)
FROM table1 t,
(SELECT @row_num := 1) x,
(SELECT @prev_value := '') y
ORDER BY t.col1,t.col2,t.col3,t.col4
L'utilisation de concat_ws gère les nullités. J'ai testé cela sur 3 champs utilisant un int, une date et un varchar. J'espère que cela vous aidera. Consultez l'article car il décompose et explique cette requête.
9 votes
Tagué avec
greatest-n-per-group
pour vous guider vers des questions similaires.1 votes
Supprimé
Sql-Server
car il s'agit de l'élément le plus voté de la liste des priorités. recherche combinée de tags mais n'est pas vraiment pertinent pour SQL Server.0 votes
Pour une fonction simple de numéro de ligne mysql, consultez le site datamakessense.com/mysql-rownum-row-number-function
0 votes
Pour MySQL, les seules solutions efficaces sont discutées dans le document mysql.rjweb.org/doc.php/groupwise_max . De nombreuses solutions connues nécessitent un balayage complet de la table (ou pire).
3 votes
L'auto-promotion sans vergogne d'une solution réelle fonction analytique ROW_NUMBER, RANK, DESNSE_RANK dans MySQL
0 votes
dba.stackexchange.com/questions/13703/
0 votes
J'ai aimé cette réponse : stackoverflow.com/a/3333697/1121497
6 votes
MySql 8 dispose maintenant de ROW_NUMBER() et RANK(), voir la réponse ci-dessous
1 votes
JimDavis Oui, ce serait stackoverflow.com/a/46753800/7154924 . Doc : dev.mysql.com/doc/refman/8.0/fr/
0 votes
Dans mysql, DENSE_RANK() pourrait vous aider. Veuillez vérifier, mysqltutorial.org/mysql-window-functions/