我想在一个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
但似乎已经有一个触发器连接到该表,所以新的一个引起冲突,事情停止工作,直到我删除它。关于如何使用其他方法完成相同的任何想法?
答案 0 :(得分:1)
您只处理900条记录,因此性能不是主要问题。
如果您在表格中执行单个插入操作,则可以执行以下操作:
insert into t(rand)
select rand
from rand900
where rand not in (select rand from t)
order by rand()
limit 1
换句话说,您不必从一个表中继续删除并移动到另一个表。您只需选择插入尚不存在的值即可。如果性能是一个问题,那么索引将在这种情况下有所帮助。
答案 1 :(得分:0)
您很可能需要了解触发器。例如,在表中插入记录后,您可以执行一些操作。请参阅此链接以了解更多详情。 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html