1

以下の順序で顧客 ID を含むセッションからリスト (初期リスト) を取得しています:-

[208700013, 30216118005, 30616118005, 10121005444, 206700013]

ここで、「IN」クエリを使用して、これらの customerIds を顧客テーブルにコレクションとして渡します。そのために、文字列の customerIds のリストを他の値と共に取得します。

ただし、customerIds は次の順序で取得されています。

10121005444
206700013
208700013
30216118005
30616118005

これは、ビューに値を表示するときに問題を引き起こしています。

クエリによって返されるリストの順序と想定される初期リストに設定されているのと同じ順序を取得するにはどうすればよいですか?

4

3 に答える 3

2

結果セットが一握りしかない場合は、コンパレータを使用して Java で並べ替えるのが最も簡単な場合があります。

オラクルで行う必要がある場合は、次のようなステートメントを使用できます。

select *  // never do that in production
from someTable
where id in (10121005444, 206700013, 208700013, 30216118005, 30616118005)
order by decode(id, 10121005444, 1, 206700013, 2, 208700013, 3, 30216118005, 4, 30616118005, 5) 
于 2012-09-17T14:19:59.963 に答える
0

IN句を使用して順序を指定することはできません。次の 2 つのオプションがあると思います。

  1. を使用してクエリを実行しIN、受信時に結果セットを並べ替えます
  2. 指定された ID ごとに個別のクエリを順番に発行します。これは明らかに効率が悪いですが、単純な実装です。
于 2012-09-17T14:19:27.297 に答える
0

このクエリを使用できます --

SELECT id FROM table
WHERE id in (10121005444, 206700013, 208700013, 30216118005, 30616118005) 
ORDER BY FIND_IN_SET(id,
    "10121005444, 206700013, 208700013, 30216118005, 30616118005");

2 番目のリストは、結果セットの順序を定義します

于 2012-09-17T14:48:31.930 に答える