2

これが私が達成したいことです:

  1. エンティティのリストを返すためにデータベースにクエリを実行したい
  2. リストをランダム化する
  3. 今後のクエリのために受け取ったアイテムのIDSを保存します
  4. 私が保存したリストにIDが含まれているのと同じテーブルで新しいクエリを実行します
  5. 保存したリストで並べ替えます。

私はすでにステップ1、2、3、4を達成することができましたが、ステップ5は困難です。誰かがそのようなクエリで私を助けることができますか?

SELECT * 
FROM table_name 
WHERE id IN (1,2,3,4....)
ORDER BY (1,2,3,4....)

前もって感謝します

4

2 に答える 2

0

試す

SELECT table_name.*
FROM   crazy_sorted_table
       LEFT JOIN
       table_name ON crazy_sorted_table.ID=table_name.ID
于 2012-12-13T04:24:35.230 に答える
0

通常の結合(等結合)でうまくいくはずです。これが私がテストしたサンプルアプローチです。

/**crazyOrder filled 100 rows with random value from 1-250 in Id**/
CREATE TABLE [dbo].[crazyOrder] (
[Id]   INT          NOT NULL,
[Area] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
/**Normal order is filled with value from 1-100 sequentially in id**/
CREATE TABLE [dbo].[normalOrder] (
[Id]   INT          NOT NULL,
[Name] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

create table #tempOrder
(id int)
insert into #tempOrder
Select top 10 Id
  from crazyOrder
   order by NewID()
go
Select n.*
from normalOrder n
  join #tempOrder t
  on t.id = n.id

一時テーブルと同じ順序で行を取得できました(値にデータジェネレーターを使用しました)

于 2012-12-13T13:23:35.433 に答える