我有两张桌子,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:)