使用随机值和常量值插入sql表

时间:2013-10-31 19:47:16

标签: sql ms-access ms-access-2007

我有三张桌子:

People (PeopleID, Name, DOB, Gender etc...)
Events (EventID, EventTitle)
EventAllocations (AllocationID, PeopleID, EventID)

每个表的ID用作主键,在EventAllocations中,PeopleID和EventID是外键。

基本上,我想随机分配人员参加特定活动(根据陪审团选择或随机门票奖励)。

我想创建一个查询:

  1. 从People表中随机选择20行,并将PeopleID写入EventAllocations中的新行
  2. 在每个新创建的行中为EventID写入常量值
  3. 我通过使用两个单独的查询设法达到了预期的效果。

    查询一个:

    INSERT INTO EventAllocations (PeopleID)
    SELECT TOP 20 People.[People ID]
    FROM People
    ORDER BY Rnd(People.[People ID]);
    

    查询二:

    UPDATE EventAllocations SET EventAllocations.EventID = 250
    WHERE (((EventAllocations.EventID) Is Null));
    

    注意我正在使用Access 2007。

    这一切似乎都非常低效 - 是否有更好的方法来解决这个问题?理想情况下,我希望一个查询同时执行这两个任务。

1 个答案:

答案 0 :(得分:0)

你是说这样的意思吗?请注意,您必须在内部联接中添加所需的逻辑,因为它现在只选择第一个降序的偶数。它是为MSSQL编写的,但它应该是类似的。希望它有所帮助

INSERT INTO EventAllocations (peopleid, eventid)
SELECT TOP 20 peopleid, x.eventid
FROM People p
inner join (select top 1 eventid 
            from events 
            order by eventid desc) x on 1=1
ORDER BY NEWID(); --Replace NEWID() with your rnd order