1

我想在一个 MySql 表中存储随机数,每次创建新记录时随机检索一个并将其插入到另一个表列中。我想在使用时从随机数表中删除检索到的数字。

随机数为 3 位,共有 900 个。

我在这里阅读了几篇文章,这些文章描述了使用唯一随机数并触发它们的插入的问题。我想使用这种方法,因为它似乎很可靠,同时产生的问题很少。

任何人都可以在这里给我一个可以完成上述操作的 sql 查询示例吗?(如果 sql 查询不是推荐的方法,请随时推荐更好的方法。)

感谢您提供的任何帮助。

我把这两个建议放在一起,并尝试了这个触发器和查询:

CREATE TRIGGER rand_num before 
INSERT ON uau3h_users FOR EACH ROW 
insert into uau3h_users (member_number) 
select random_number from uau3h_rand900 
where random_number not in (select member_number from uau3h_users) 
order by random_number 
limit 1

但似乎已经有一个触发器附加到该表,所以新的触发器会导致冲突,直到我删除它,事情才停止工作。关于如何使用另一种方法完成相同任务的任何想法?

4

2 回答 2

1

您只处理 900 条记录,因此性能不是主要问题。

如果您正在对表进行单次插入,则可以执行以下操作:

insert into t(rand)
    select rand
    from rand900
    where rand not in (select rand from t)
    order by rand()
    limit 1

换句话说,您不必不断地从一个表中删除并移动到另一个表。您可以选择插入尚不存在的值。如果性能是一个问题,那么索引将在这种情况下有所帮助。

于 2013-04-16T23:24:25.313 回答
0

您很可能需要查看触发器。例如,您可以在表中插入记录后做一些事情。请参阅此链接以获取更多详细信息。 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

于 2013-04-16T23:16:40.767 回答