这就是我想要实现的目标:
- 我想查询我的数据库以返回实体列表
- 随机化列表
- 存储收到的项目的 IDS 以供将来查询
- 在 ID 位于我存储的列表中的同一个表上运行新查询
- 按我存储的列表排序。
我已经设法实现了第 1、2、3、4 步,但第 5 步很困难。任何人都可以帮助我进行这样的查询:
SELECT *
FROM table_name
WHERE id IN (1,2,3,4....)
ORDER BY (1,2,3,4....)
提前致谢
这就是我想要实现的目标:
我已经设法实现了第 1、2、3、4 步,但第 5 步很困难。任何人都可以帮助我进行这样的查询:
SELECT *
FROM table_name
WHERE id IN (1,2,3,4....)
ORDER BY (1,2,3,4....)
提前致谢
正常的连接(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
我能够以与临时表中相同的顺序检索行(我对值使用了数据生成器)
尝试
SELECT table_name.*
FROM crazy_sorted_table
LEFT JOIN
table_name ON crazy_sorted_table.ID=table_name.ID