0

私はテーブル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

データがソートされない方法

ここに画像の説明を入力

4

3 に答える 3

2

Craig Ringer による非常に包括的な回答に追加するには、問題を再構成することを検討することをお勧めします。なぜ行をその特定の順序で表示したいのですか? 明らかに、その順序には特定の意味があり、「たまたまその順序で挿入された」ということは、その逆ではなく、データベースの技術がアプリケーションをリードすることを意味します。

たとえば、これらの行が何らかのイベントを表し、イベントが発生した順序でそれらを取得したい場合があります。この場合、適切な順序付け列はタイムスタンプになります。自動インクリメント シーケンスのように、行が挿入されたときのデフォルト値を指定できます (ただし、必要に応じて、列に明示的に挿入するか、後で値を更新することで、それをオーバーライドできます)。

ALTER TABLE some_table ADD COLUMN event_date TIMESTAMP NOT NULL DEFAULT ( NOW() );

または、実際には UI に表示される表示ラベルに基づいている可能性があります。その場合ORDER BY、データベースが正しいcollation.

最後に、それは完全に恣意的な表示順序であり、一般的なアイテムや重要なアイテムをメニューの一番上に表示するように微調整できる可能性があります。その場合、表示順序自体がモデル化されるアイテムのプロパティであるため、テーブルに独自の列が必要です。orderは SQL キーワードなので、列名を特別に引用することを気にせずに言うことができるように、私はそのような列を頻繁に呼び出しますorder_hintORDER BY order_hint

于 2013-07-20T13:21:01.653 に答える