sql >> データベース >  >> RDS >> Mysql

SQLクエリの結果が期待どおりに戻らないのはなぜですか?

    クエリの順序は、ステートメントで「Orderby」句を使用して強制できます。 SQLデータベースは、実際には、どのような順序でデータを配置したか、またはデータを特定の順序で格納したかを理解していません。これは、アイテムをどの順序にするかをSQLに指示する必要があることを意味します。例:

    Select * from Table
      order by column1 desc
    

    友達に何かを渡して持ってもらうようなものだと考えてください。友達は後で全部持っていくでしょうが、その間にどこかに保管してくれます。彼女はあなたが何か他のもののために場所を空けることを探していない間にそれを動かしたり、あなたが彼女に与えたのと同じ順序でそれを返すかもしれませんが、あなたはそれを整頓するように彼女に言わなかったので、彼女はしません。

    データベースはバックグラウンドで物事を移動できる必要があるため、データベースの構築方法は本質的に順序を認識しません。データベースに渡すときに順序を認識して、データベースに戻すことができるようにする必要があります。後で欲しい注文。 order句を使用すると、SQLはデータに順序を課すことができますが、それ自体は順序を記憶していないか、持っていません。

    重要なポイント :SQLが過去100万回、order byステートメントなしで正しい順序でアイテムを返した場合でも、そうなることを保証するものではありません。クラスター化されたインデックスがテーブルに存在する場合でも、期待どおりの順序で結果が返されるとは限りません。特にSQLのバージョンが変更された場合、order by句を明示的に使用しないと、クエリが希望の順序になると想定しているプログラムが破損する可能性があります。



    1. MySQLで日時値に時間を追加する方法

    2. MySQL Workbenchとは何ですか?

    3. MySQLでピボットテーブルクエリを自動化する方法

    4. MySQLのALTERTABLE:味方か敵か?