Maison >base de données >tutoriel mysql >Comment puis-je reproduire la fonction ROW_NUMBER () de SQL Server dans MySQL?
Simulation de SQL Server's Row_number () dans MySQL
La fonction SQL Server ROW_NUMBER()
n'a pas d'équivalent direct dans les versions MySQL plus anciennes (avant 8.0). Cela crée un besoin de solution de contournement.
Une approche commune utilise une affectation variable dans la requête:
<code class="language-sql">SELECT t.*, @rownum := @rownum + 1 AS rank FROM YOUR_TABLE t, (SELECT @rownum := 0) r;</code>
Cette méthode, cependant, est insuffisante lorsque le partitionnement est requis (regroupement par plusieurs colonnes). L'incrément variable simple ne se réinitialise pas de manière appropriée sur différentes partitions. Une manipulation variable plus complexe et une logique conditionnelle seraient nécessaires pour imiter le comportement partitionné de ROW_NUMBER()
.
Une solution plus robuste, en particulier pour les scénarios partitionnés, est détaillée par Quassnoi: https://www.php.cn/link/dad1b0570ebcac40e06e54e2c566d452 Cette ressource fournit une approche plus sophistiquée pour gérer les complexités de partition de partitionnement de partitionnement de partitionnement de partitionings de partitionings de partitionnement de partitionings de partition de partage fournit une approche sophistiquée pour gérer les complexités de partitionnement de partitionnement .
Il est important de noter que les versions MySQL 8.0 et ultérieures font incluent la fonction ROW_NUMBER()
, éliminant la nécessité de ces solutions de contournement. Si possible, la mise à niveau vers une version MySQL plus récente est la solution recommandée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!