あまり使われることはありませんが、関数を開発するためにmysqlでステートメントを書かなければならない場面があります。 SQLサーバーでソートするためにrow_number()関数を使用することに慣れていますが、mysqlにはそのような関数がありません。すると、ぽオーナーの書いた記事を見つけました。変数割り当てによるクエリ。 (追記:私がテストしたバージョンはmysql 5.6です)
最初にテーブルを作成します
リーリー
次にテストデータを挿入し、poマスターが紹介した方法を使用してテストします
リーリー
クエリの結果は
デメリットを確認するときにRnrが常に1になるのはなぜですか?このクエリでは、@row 変数の値は常に null であるため、ケースの判別式に基づくと、値は 1 のみになります。この現象を引き起こしました。しかし、再度実行すると、同じスクリプトを使用します
。
もう一度実行すると、2345になるはずです
これが実際に当てはまることがテストで検証されたので、それがわかります。変数はこのセッションに常に存在し、毎回使用されるため、前述の状況が発生します。
実際、対応する解決策も非常に簡単です。各セッションは同じ値を使用するため、問題を解決するには最初に初期値を割り当てるだけです。たとえば、この例では @row = を設定します。 begin.0; この文を追加すると、実行するたびに最初に初期値が代入され、当然ながら一貫した実行結果が得られます。
このテストにより、このデータベースでは制御変数 hin の初期値が重要であることが分かりました。
上記は編集者が紹介した Mysql row_number() ソート関数の使い方と注意点です。ご質問があればメッセージを残してください。編集者がすぐに返信します。 。ウェブサイトをご利用いただき、誠にありがとうございます。