背景:我目前正在开发一个简单的在线测验。在用户回答了一个简单的问题后,用户就有机会通过做一些小任务来提高获胜的机会。
用户赚取的每一手都插入到单独的行中,因此当我需要找到“随机”手时,他们中奖的机会就会增加(如果我错了,请纠正我)。
来自批次表的样本数据:
LotId ParticipantId Created
1 1 2012-11-16 12:00:00
2 2 2012-11-16 12:02:00
3 2 2012-11-16 12:06:00
4 2 2012-11-16 12:15:00
5 3 2012-11-16 12:16:00
这意味着 ParticipantId 为 2 的参与者拥有三手,因此与其他参与者相比,在统计上获胜的机会更大。
我需要做的:当我需要抽中奖时,我会从手数表中随机选择一个手数。在此之后,我需要找到有关获胜者的信息。
目前我在 SELECT 之后使用这个(任何关于改进 SELECT 的评论都值得赞赏),然后在我的代码中我有另一个 SELECT 与用户的信息。
SELECT TOP 1 LotId, ParticipantId FROM Sample_Lots WITH (NOLOCK)
WHERE
CAST(Created AS DATE) = '2012-11-16'
AND
ParticipantId NOT IN
(
SELECT ParticipantId FROM Sample_Winners WITH (NOLOCK)
WHERE
ParticipantId IS NOT NULL
AND
CAST(ThisDate AS DATE) = '2012-11-16'
)
AND
ParticipantId IN
(
SELECT ParticipantId FROM Sample_Participants WITH (NOLOCK)
WHERE
ParticipationConfirmed IS NOT NULL
)
ORDER BY NEWID()
我无法解决这个问题。我需要一个随机批次,并且从这个随机批次中我需要在同一个 SELECT 中获取用户的信息。有任何想法吗?