ホームページ  >  記事  >  データベース  >  MySQL行番号()ソート関数の使い方と注意_MySQL

MySQL行番号()ソート関数の使い方と注意_MySQL

WBOY
WBOYオリジナル
2016-08-20 08:48:091814ブラウズ

あまり使われることはありませんが、関数を開発するためにmysqlでステートメントを書かなければならない場面があります。 SQLサーバーでソートするためにrow_number()関数を使用することに慣れていますが、mysqlにはそのような関数がありません。すると、ぽオーナーの書いた記事を見つけました。変数割り当てによるクエリ。 (追記:私がテストしたバージョンはmysql 5.6です)

最初にテーブルを作成します

リーリー

次にテストデータを挿入し、poマスターが紹介した方法を使用してテストします

リーリー

クエリの結果は

デメリットを確認するときにRnrが常に1になるのはなぜですか?このクエリでは、@row 変数の値は常に null であるため、ケースの判別式に基づくと、値は 1 のみになります。この現象を引き起こしました。しかし、再度実行すると、同じスクリプトを使用します

もう一度実行すると、2345になるはずです

これが実際に当てはまることがテストで検証されたので、それがわかります。変数はこのセッションに常に存在し、毎回使用されるため、前述の状況が発生します。

実際、対応する解決策も非常に簡単です。各セッションは同じ値を使用するため、問題を解決するには最初に初期値を割り当てるだけです。たとえば、この例では @row = を設定します。 begin.0; この文を追加すると、実行するたびに最初に初期値が代入され、当然ながら一貫した実行結果が得られます。

このテストにより、このデータベースでは制御変数 hin の初期値が重要であることが分かりました。

上記は編集者が紹介した Mysql row_number() ソート関数の使い方と注意点です。ご質問があればメッセージを残してください。編集者がすぐに返信します。 。ウェブサイトをご利用いただき、誠にありがとうございます。

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