我有两张桌子,Posts
和Cache
。
Cache
表格保存了我应该显示的帖子。帖子 ID 保存在列中(PostIDs
在Cache
表格中,以逗号 ( ) 分隔,
。
这是我的代码:
SELECT * FROM Posts a
WHERE ID IN
(
SELECT item FROM Cache AS b
CROSS APPLY dbo.fnSplit(b.postIDs, ',')
WHERE ((b.ownerID = 1) AND (b.magID = 8))
)
也fnSplit
可以正常工作。
但问题是,帖子的顺序不正确。
例如,如果我们在Cache
:中有这个字符串5,1,9,4,10,3
,我想从Posts
该顺序获取帖子。(第一行应该是 ID 为 5 的帖子,然后是 1,然后是 9,然后是 4,...)
但是我的代码以另一种顺序返回帖子:(表1,3,4,5,9,10
中的行顺序Posts
)
我应该怎么做(纯 SQL)才能按Cache
表中指定的顺序获取项目?(在该示例中,我想按此顺序获取帖子5,1,9,4,10,3
:)