私はテーブルAを持っています:
Col1 Col2
12 a
12 c
12 b
私がコーディングした場合:Select * from A;
結果は次のとおりです。
Col1 Col2
12 a
12 b
12 d
取得したいデータは次のとおりです。
Col1 Col2
12 a
12 c
12 b
データがソートされない方法
私はテーブルAを持っています:
Col1 Col2
12 a
12 c
12 b
私がコーディングした場合:Select * from A;
結果は次のとおりです。
Col1 Col2
12 a
12 b
12 d
取得したいデータは次のとおりです。
Col1 Col2
12 a
12 c
12 b
データがソートされない方法
Craig Ringer による非常に包括的な回答に追加するには、問題を再構成することを検討することをお勧めします。なぜ行をその特定の順序で表示したいのですか? 明らかに、その順序には特定の意味があり、「たまたまその順序で挿入された」ということは、その逆ではなく、データベースの技術がアプリケーションをリードすることを意味します。
たとえば、これらの行が何らかのイベントを表し、イベントが発生した順序でそれらを取得したい場合があります。この場合、適切な順序付け列はタイムスタンプになります。自動インクリメント シーケンスのように、行が挿入されたときのデフォルト値を指定できます (ただし、必要に応じて、列に明示的に挿入するか、後で値を更新することで、それをオーバーライドできます)。
ALTER TABLE some_table ADD COLUMN event_date TIMESTAMP NOT NULL DEFAULT ( NOW() );
または、実際には UI に表示される表示ラベルに基づいている可能性があります。その場合ORDER BY
、データベースが正しいcollation
.
最後に、それは完全に恣意的な表示順序であり、一般的なアイテムや重要なアイテムをメニューの一番上に表示するように微調整できる可能性があります。その場合、表示順序自体がモデル化されるアイテムのプロパティであるため、テーブルに独自の列が必要です。order
は SQL キーワードなので、列名を特別に引用することを気にせずに言うことができるように、私はそのような列を頻繁に呼び出しますorder_hint
。ORDER BY order_hint