ホームページ >データベース >mysql チュートリアル >SQL Server の ROW_NUMBER() 機能を MySQL にレプリケートするにはどうすればよいですか?

SQL Server の ROW_NUMBER() 機能を MySQL にレプリケートするにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-25 09:16:08246ブラウズ

How Can I Replicate SQL Server's ROW_NUMBER() Functionality in MySQL?

mysqlのrow_number()等価:比較

SQL ServerのROW_NUMBER()関数は、一意のシーケンシャル番号を行に割り当て、行のランキングとデータ取得を簡素化します。 ただし、MySQLには直接的な同等のものはありません。 同様の結果を達成する方法を調べてみましょう。

古いMySQLバージョンの回避策

8.0以前のmysqlバージョンの場合、ユーザー定義の変数を使用して

をシミュレートできます。

ROW_NUMBER()これにより、

を0から0に初期化し、各行の増分を作成し、シーケンシャルランクを作成します。
<code class="language-sql">SELECT t.*, @rownum := @rownum + 1 AS rank
FROM YOUR_TABLE t, (SELECT @rownum := 0) r;</code>

@rownum

でパーティションを模倣し、注文します

SQL Serverのは、多くの場合、および条項を使用します。 これを古いMySQLで複製するには、より複雑な変数処理、各パーティションのカウンターをリセットする必要があります。 このアプローチは、複数のパーティション化列で効率が低くなり、エラーが発生しやすくなります。

エレガントなソリューション:mysql 8.0ウィンドウ関数ROW_NUMBER()PARTITION BY ORDER BYmysql 8.0以降のバージョンは、

を含むウィンドウ関数を提供し、よりクリーンでより効率的な代替品を提供します:

これは、

の機能を直接反映しており、複雑なランキングシナリオのソリューションが大幅に改善されたソリューションを提供します。 この方法は、MySQL 8.0以降に推奨されます

以上がSQL Server の ROW_NUMBER() 機能を MySQL にレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。