表:
ConditionId ContentId
10004 101
10004 102
10001 104
10001 103
10001 115
从上面的数据中,我需要为特定的 ConditionID 选择 TOP N 记录,并将其与另一组 top N 结果合并,形成不同的条件 id。
例如:对于条件 id 10001 给出 2 个结果,条件 ID 10004 给出前 3 个结果(这两个结果应该是唯一的并且不重叠):
我可以 :
SELECT top(2) * FROM TABLEA
WHERE Conditionid = 10001
UNION
SELECT top(3) * FROM TABLEA
WHERE Conditionid = 10004
但这只是一个有限的场景,请求的条件 ID 可以是多个而不是上述场景中的 2 个。
出于性能原因,我不想编写动态 SQL,有没有办法通过使用 ConditionId IN() 来做类似的事情
编辑:
top 2 和 top 3 的结果不应与 contentid 重叠,因此如果特定 contentid 已经是 Query 1 的一部分,则它不应成为下一个 top N 的一部分,依此类推。