1

次のコードがあります。

@selected_authors = Author.find(:all, :conditions => ["AUT_OID in (?)",@selected_authors_array ])

@selected_authors_array は、著者 ID の配列です。例: 55 75 74

配列内の ID は特定の順序ではないことに注意してください

私がする時

<%@selected_authors.each do |author| %>
<%=author.AUT_OID  %> -- <%=author.AUT_NAME  %>
<% end %>

55、74、75 と表示されます (ID の順序を昇順に変更します)。

配列「@selected_authors_array」にあるように、@selected_author のエントリの順序を維持したいと思います。

どんな助けでも大歓迎です

4

2 に答える 2

2

これは、基礎となるデータベースの問題です。

列 AUT_OID で検索/比較を行うと、自動的にこのインデックス (利用可能な場合) またはプライマリ インデックスを使用してすべてのエントリを調べます。比較が「true」を返す場合、DB は現在の行を結果リストにポップします。したがって、AUT_OID にインデックス/プライマリがあり、それを検索すると、AUT_OID 順のリストが得られます。

同じ順序の ID が本当に必要な場合は、手動で再設定する必要があると思います。

ヒント: mySQL では、EXPLAIN 構文を使用して、db が使用しているインデックス (したがって順序) を確認できます。

EXPLAIN <select-statement>
于 2012-08-22T12:52:28.370 に答える
2

これは、SQL サーバーの動作です。

最初のレコードから検索レコードを開始します。どのレコードが最初に出力に追加されるか。

1. So in your database table records are in this order 55 74 75
2. And your using IN, IN will check value is there or not.

手動で配置できます。

于 2012-08-22T13:24:36.830 に答える