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

正常的连接(equi join)应该可以解决问题,这是我测试的示例方法:

/**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 回答
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 回答